|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
record'ы и массивы
Есть композиция:
Код:
type TStringArray = array[0..FCount-1] of string; TRec = record Var1:string; Vars:TStringArray; end; TRecs = array of TRec; TClass = class private FRecs:TRecs; public constructor Create(Count:integer); end; var FCount:integer; *** constructor TClass.Create(Count:integer); begin FCount := Count; end; |
#2
|
||||
|
||||
Никак
______________ Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
О как! С трудом в это верится. Может есть и другие мнения?
|
#4
|
||||
|
||||
Цитата:
Цитата:
А по вопросу - record не может быть переменной длины. |
#5
|
|||
|
|||
Код:
type TRec = record Var1: string; Memo1: TMemo; end; >woweook< |
#6
|
||||
|
||||
Цитата:
Цитата:
Цитата:
Pyro, использовать TMemo, TStrings или TStringList в данном случае неактуально. Мне не нужен набор методов и переменных данных классов. Зачем зря утяжелять? ) Последний раз редактировалось morebeauty, 29.11.2012 в 12:46. |
#7
|
|||
|
|||
Цитата:
>woweook< |
#8
|
||||
|
||||
А что если record переделать в класс?
|
#9
|
||||
|
||||
Будет сильно круто.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#10
|
||||
|
||||
Цитата:
В общем то и массивов переменной длины в Delphi нет - либо статические, либо динамические. |
#11
|
||||
|
||||
Код:
В общем то и массивов переменной длины в Delphi нет - либо статические, либо динамические. |
#12
|
||||
|
||||
Цитата:
Код:
const FCount = 10; type TStringArray = array[0..FCount-1] of string; |
#13
|
||||
|
||||
Код:
Ну если "статический массив от константы", то это легко делается |
#14
|
|||
|
|||
Цитата:
Вопрос, а чем тебя не устраивает что-то типа: Код:
type TMyClass = class privatre FCount : Integer; A : Array Of String; public constructor Create(ACount : Integer); virtual; property Count : Integer read FCount; end; constructor TMyClass.Create(ACount : Integer); begin FCount := ACount; SetLength(A,FCount); end; Если FCount потом не меняется, задается через конструктор, то один вызов SetLength погоды не делает и на производительности сильно не скажется. |
#15
|
||||
|
||||
Цитата:
Код:
TStringArray = array[0..FCount-1] of string; TRec = record Var1:string; Vars:TStringArray; end; TRecs = array of TRec; TClass = class private FRecs:TRecs; public constructor Create(Count:integer); end; Для того, чтобы задать размер TStringArray, к нему придется обращаться через TRecs = array of TRec;... То есть SetLength (FRecs.[i(от 0 до B)].Vars,A); то есть SetLength будет вызвано B раз |