Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-45949
prorok2
2002-11-04 12:34
2002.11.14
Вызов внешней программы и работа с ней


1-45926
Leon83
2002-11-04 07:20
2002.11.14
поиск файлов


1-45892
@andrew
2002-11-05 21:24
2002.11.14
Есть ListBox Как зная координаты некой точки экрана...


3-45732
123000
2002-10-23 17:41
2002.11.14
Сортировка


3-45709
kucherav
2002-10-24 00:54
2002.11.14
Помогите! Ничего не понимаю!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский