Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1194380129
asail
2007-11-06 23:15
2008.03.30
IBX, prepare & транзакции.


15-1203234882
@!!ex
2008-02-17 10:54
2008.03.30
Помгите найти драйвер


11-1172839152
kichrot
2007-03-02 15:39
2008.03.30
Не модальная форма без фокуса


2-1204363054
makz
2008-03-01 12:17
2008.03.30
Запрос


15-1203248203
Сатир
2008-02-17 14:36
2008.03.30
Кто встречался с подобным типом ссылок, как это можно скачать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский