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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
4-1190891664
apic
2007-09-27 15:14
2008.06.08
usb


11-1181491706
Robt
2007-06-10 20:08
2008.06.08
ListBox


6-1188144637
Max.66RUS
2007-08-26 20:10
2008.06.08
Отследить момент подключения компьютера к интернет...


2-1210819994
OLGA
2008-05-15 06:53
2008.06.08
Очень срочно!!!


15-1209015532
oxffff
2008-04-24 09:38
2008.06.08
УРА!!!!!!!!!!!!!!!!!!! Delphi RoadMap