Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Help! Как побороть цикличность определения типов записей.   Найти похожие ветки 

 
Paxer   (2002-11-03 11:43) [0]

Подскажите, как побороть проблему цикличности определения типов записей:
Tr1=record;
i:Integer;
r2:array of Tr2;
end;
Tr2=record
j:integer;
r1:Tr1;
end;
Помнится, еще когда учился в институте, то вроде-бы эта проблема решалась толи директивой, толи еще как, не помню. Поможите люди добры, а то в чужом городе - ни книг, ни спросить у кого...


 
AngeL B.   (2002-11-03 11:52) [1]

Проблема решается указателями.


 
Paxer   (2002-11-03 12:08) [2]

Это что-то типа:
Type

Tr1=record;
i:Integer;
r2:array of Pointer;
end;
Tr2=record
j:integer;
r1:Tr1;
end;
var
r1:Tr1;
p:^Tr2;
begin
p:=r1.r2[0];
p^.j:=0;
end.

Написал навскидку, но это решение меня не устраивает, как-то криво. Может есть что-то другое, попроще?


 
()utLaw ©   (2002-11-03 21:17) [3]

2 Paxer:
Интересно, а как Вы себе вообще это представляете:
В первой структуре (ее размер пока еще не известен) есть массив из вторых структур (их размер тоже пока еще не известен), в каждой из которых опять массив из первых структур и так до бесконечности?
Тут либо указатели, либо (я не уверен) в Delphi версии > 3 есть задание размера массива в процессе работы. Но тогда Ваш вариант не должен вызвать ошибку. А иначе -

type

Pa2 = ^Ta2;

Tr1 = record
i: Integer;
r2: Pa2;
end;

Tr2 = record
j: integer;
r1: Tr1;
end;

Ta2 = array [1..3] of Tr2;

var
r1: Tr1;

begin
New(r1.r2);
r1.r2^[2].j := 2;
Dispose(r1.r2);
end.

Код весьма компактный и указатель imho не сильно напрягает.



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
1-45799
lensky
2002-11-03 19:45
2002.11.14
Listview Select All...


1-45826
mihrutka
2002-11-05 11:31
2002.11.14
Как узнать индекс узла в TTreeView относительно всего дерева?


4-46203
Дмитрий Иванов
2002-10-05 17:04
2002.11.14
Размеры окна, зная его хендл?


14-46090
duce
2002-10-26 12:47
2002.11.14
Работа в московском офисе МВ(который оргтехнику продает)?


3-45769
Элина
2002-10-25 16:53
2002.11.14
Индексные файлы Paradox