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

Вниз

рекурсивный массив   Найти похожие ветки 

 
cyber-pilot   (2008-05-13 15:23) [0]

Подскажите, как правильно объявить такую рекурсивную конструкцию:

TRec = record
 pole1: Integer;
 pole2: String;
 List: TRecList;
end;

TRecList := array of TRec;


 
Сергей М. ©   (2008-05-13 15:27) [1]

Ты такой конструкцией хочешь с деревьями работать ?


 
Palladin ©   (2008-05-13 15:33) [2]

интересно, что сия конструкция означает :)


 
Сергей М. ©   (2008-05-13 15:37) [3]


> Palladin ©   (13.05.08 15:33) [2]


Дровами тут изрядно попахивает)


 
cyber-pilot   (2008-05-13 15:44) [4]

Я упрощенно записал, то что мне нужно.

Поля записи это условия поиска, и одним из условий хотелось бы сделать такую же структуру. Чтобы можно было уточнить изначальные условия.


 
cyber-pilot   (2008-05-13 15:53) [5]

До меня дошло, можно сделать так:

TRec = class;

TRecList := array of TRec;

TRec = class
pole1: Integer;
pole2: String;
List: TRecList;
end;


 
Сергей М. ©   (2008-05-13 15:53) [6]

ПРидется задействовать указательные типы, со всеми вытекающими последствиями:

PRec = ^TRec;
TRecList = array of PRec;

TRec = packed record
pole1: Integer;
pole2: String;
List: TRecList;
end;


 
Palladin ©   (2008-05-13 15:54) [7]

ну ты мощную конструкцию задвинул... внушаить :)
решается примерна так

TRec = record
pole1: Integer;
pole2: String;
List: ^TRec;
end;


 
Сергей М. ©   (2008-05-13 15:54) [8]


> До меня дошло, можно сделать так:
>
> TRec = class;
>


Это из той же оперы, что и [6], с теми же вытекающими последствиями


 
Palladin ©   (2008-05-13 15:55) [9]

опля... так нельзя... так нужно...

PRec=^TRec;
TRec = record
pole1: Integer;
pole2: String;
List: PRec;
end;


 
Сергей М. ©   (2008-05-13 16:05) [10]


> Palladin ©   (13.05.08 15:55) [9]


Тогда простой индексный доступ (как в случае с дин.массивом) не получится, а автора именно он пАрит, насколько мне подсказывает мой телепатор)


 
Palladin ©   (2008-05-13 16:18) [11]

:) ну отчего"ж, получится... ректально, конечно

Type
 PRec=^TRec;
 TRec=Record
  p1,p2:Integer;
  sub:PRec;
 End;

Function RecSubRec(R:PRec;nIndex:Integer):PRec;
Begin
 Inc(R,nIndex);
 Result:=R;
End;

Procedure RecInitList(Var R:TRec;nCount:Integer);
Begin
 GetMem(R.Sub,nCount*SizeOf(TRec));
End;

Procedure RecDoneList(Var R:TRec);
Begin
 FreeMem(R.Sub);
End;

Var
 r:TRec;
Begin
 RecInitList(r,10);
 Try
  RecSubRec(r.sub,10).p1:=10;
 Finally
  RecDoneList(r);
 End;
End;

:) но сам факт!..


 
Palladin ©   (2008-05-13 16:19) [12]

упс... за границы вышел... :)


 
Сергей М. ©   (2008-05-13 16:57) [13]


> ректально, конечно


Вот именно что ректально)


 
sniknik ©   (2008-05-13 22:03) [14]

а так не пойдет?
 TRec = class
   pole1: Integer;
   pole2: String;
   List: array of TRec;
 end;


 
sniknik ©   (2008-05-13 22:08) [15]

хм... хотя, уже есть, [5] примерно тоже самое.


 
Leonid Troyanovsky ©   (2008-05-13 22:10) [16]


> sniknik ©   (13.05.08 22:03) [14]

> а так не пойдет?

В любом случае, bad design.

--
Regards, LVT.



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

Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.051 c
15-1209363053
БарЛог
2008-04-28 10:10
2008.06.08
Собираюсь купить домен


15-1209268074
sauron
2008-04-27 07:47
2008.06.08
Разработчикам...


2-1210658320
voe
2008-05-13 09:58
2008.06.08
парсинг Web


2-1210672414
nelco
2008-05-13 13:53
2008.06.08
Помогите с DBGrid


15-1208933925
REA
2008-04-23 10:58
2008.06.08
Договор с работодателем





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