Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
ВнизВариантная запись Найти похожие ветки
← →
хаас (2008-03-01 07:38) [0]Сделать вариантную запись со string - это не реально?
TText1 = record
str1: string;
wrd1: Word;
str2: string;
end;
TText2 = record
str3: string;
str4: string;
end;
TRecord1 = record
String1: string;
DWord1: DWord;
case Integer of
1: (text1: TText1);
2: (text2: TText2);
end;
← →
begin...end © (2008-03-01 09:24) [1]Each variant is a semicolon-delimited list of declarations resembling the fieldList: type constructions in the main part of the record type. That is, a variant has the form
fieldList1: type1;
...
fieldListn: typen;
where each fieldList is a valid identifier or comma-delimited list of identifiers, each type denotes a type, and the final semicolon is optional. The types must not be long strings, dynamic arrays, variants (that is, Variant types), or interfaces, nor can they be structured types that contain long strings, dynamic arrays, variants, or interfaces; but they can be pointers to these types.
(c) Delphi Help, "Variant parts in records"
← →
sniknik © (2008-03-01 09:31) [2]> The types must not be long strings
сделай короткими...
← →
хаас (2008-03-01 09:53) [3]Короткие - слишком короткие.
Я так понял, что можно делать указатель на нужную запись со строками. Но в таком случае боюсь что у меня получится бред полный.
Весь каркас у меня сосотоит таким образом:TText1 = record
str1: string;
wrd1: Word;
str2: string;
end;
TText2 = record
str3: string;
str4: string;
end;
TRecord1 = record
String1: string;
DWord1: DWord;
case Integer of
1: (text1: TText1);
2: (text2: TText2);
end;
=================================
TRecords = array of TRecord1;
PItemRec = ^TItemRec;
TItemRec = record
str1: string;
int1: Integer;
...
Records: TRecords;
end;
А потом где-то делается так:New(_PItemRec);
with _PItemRec^ do
begin
...
SetLength(Records, ...);
for i := Low(Records) to High(Records) do
Records[i].str1 := "...."
...
end;
TreeView1.Items.AddChildObject(.., .., _PItemRec);
Насколько в таком случае будет бред, если делать указатель в записях?
← →
sniknik © (2008-03-01 10:20) [4]> Насколько в таком случае будет бред, если делать указатель в записях?
полный бред.
имхо, нет такой задачи чтобы это пригодилось...
ну сделал ты, 2 переменные указатели расположенные по одному адресу (case). и какой в этом смысл, присвоил указатель на одну структуру, а обращаешься к другой, а там у тебя ворд, совместиться со ссылкой на обьект (стринг)... AV гарантированы.
вообще лучше решать задачу, чем мучится над неверным путем решения... в чем задача то состоит?
← →
korneley © (2008-03-01 10:25) [5]И что, транслятор пропустил такое? А именно описание TRecord1? Но даже если заменить у TText1 и TText2 string на string[...] (см. [1], [2]) не понятно, что же хотелось получить. На одну область памяти отображаются или 2 строки, или 2 строки и ворд (!) между ними (!!!) Каша какая-то...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c