Главная страница
    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-1210874146
TStas
2008-05-15 21:55
2008.06.08
Как получить размер экрана в сантиметрах?


2-1211025413
slimer
2008-05-17 15:56
2008.06.08
Отключение ошибок


10-1146654394
Genry
2006-05-03 15:06
2008.06.08
Ограничение доступа к COM+ компонентам


3-1199661770
porter
2008-01-07 02:22
2008.06.08
получить несколько столбцов для одного поля


2-1210671467
snake-as
2008-05-13 13:37
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский