Форум: "Начинающим";
Текущий архив: 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.052 c