![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
рекурсивный массив
cyber-pilot © (2008-05-13 15:23:00)Подскажите, как правильно объявить такую рекурсивную конструкцию:
TRec = record
pole1: Integer;
pole2: String;
List: TRecList;
end;
TRecList := array of TRec;
Leonid Troyanovsky (2008-05-13 22:10:00) [1]
> sniknik © (13.05.08 22:03) [14]
> а так не пойдет?
В любом случае, bad design.
--
Regards, LVT.
sniknik (2008-05-13 22:08:00) [2]хм... хотя, уже есть, [5] примерно тоже самое.
sniknik (2008-05-13 22:03:00) [3]а так не пойдет?
TRec = class
pole1: Integer;
pole2: String;
List: array of TRec;
end;
Сергей М. (2008-05-13 16:57:00) [4]
> ректально, конечно
Вот именно что ректально)
Palladin (2008-05-13 16:19:00) [5]упс... за границы вышел... :)
Palladin (2008-05-13 16:18:00) [6]:) ну отчего'ж, получится... ректально, конечно
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;
:) но сам факт!..
Сергей М. (2008-05-13 16:05:00) [7]
> Palladin © (13.05.08 15:55) [9]
Тогда простой индексный доступ (как в случае с дин.массивом) не получится, а автора именно он пАрит, насколько мне подсказывает мой телепатор)
Palladin (2008-05-13 15:55:00) [8]опля... так нельзя... так нужно...
PRec=^TRec;
TRec = record
pole1: Integer;
pole2: String;
List: PRec;
end;
Palladin (2008-05-13 15:54:00) [9]ну ты мощную конструкцию задвинул... внушаить :)
решается примерна так
TRec = record
pole1: Integer;
pole2: String;
List: ^TRec;
end;
Сергей М. (2008-05-13 15:54:00) [10]
> До меня дошло, можно сделать так:
>
> TRec = class;
>
Это из той же оперы, что и [6], с теми же вытекающими последствиями
cyber-pilot (2008-05-13 15:53:00) [11]До меня дошло, можно сделать так:
TRec = class;
TRecList := array of TRec;
TRec = class
pole1: Integer;
pole2: String;
List: TRecList;
end;
Сергей М. (2008-05-13 15:53:00) [12]ПРидется задействовать указательные типы, со всеми вытекающими последствиями:
PRec = ^TRec;
TRecList = array of PRec;
TRec = packed record
pole1: Integer;
pole2: String;
List: TRecList;
end;
cyber-pilot (2008-05-13 15:44:00) [13]Я упрощенно записал, то что мне нужно.
Поля записи это условия поиска, и одним из условий хотелось бы сделать такую же структуру. Чтобы можно было уточнить изначальные условия.
Сергей М. (2008-05-13 15:37:00) [14]
> Palladin © (13.05.08 15:33) [2]
Дровами тут изрядно попахивает)
Palladin (2008-05-13 15:33:00) [15]интересно, что сия конструкция означает :)
Сергей М. (2008-05-13 15:27:00) [16]Ты такой конструкцией хочешь с деревьями работать ?