Главная страница
    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.044 c
2-1210878036
Zoom
2008-05-15 23:00
2008.06.08
Transparent Bitmap и Cаnvas?


2-1211134192
rena
2008-05-18 22:09
2008.06.08
Преобразование типа Char


2-1210856525
Гена_88
2008-05-15 17:02
2008.06.08
SQL in Delphi


2-1210090413
TStas
2008-05-06 20:13
2008.06.08
Как написать опережающее объявления класса?


2-1210838343
Вася
2008-05-15 11:59
2008.06.08
FireBird и Year()





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