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

Вниз

Для волков делфи   Найти похожие ветки 

 
SergeyDon   (2002-05-23 15:21) [0]

На сколько себя оправдывает описание таким образом:

type TShetchik = record
ID:cardinal;
Sh_Name:string;
Sh_Number:cardinal;
end;
type TShema = record
ID:cardinal;
Name:string;
Shetchik: array of TShetchik;
end;
PShema = ^TShema;
...

var
MyList:TList;
Shema:PShema;

...
MyList:= TList.Create;
New(Shema);
Shema^.ID:=$00001;
Shema^.Name:="test";
SetLength(Shema^.Shetchik,3);
Shema^.Shetchik[0].ID:=$0001;
Shema^.Shetchik[0].Sh_Name:="sh1";
Shema^.Shetchik[0].Sh_Number:=$1010;
Shema^.Shetchik[1].ID:=$0002;
Shema^.Shetchik[1].Sh_Name:="sh2";
Shema^.Shetchik[1].Sh_Number:=$2010;
Shema^.Shetchik[2].ID:=$0003;
Shema^.Shetchik[2].Sh_Name:="sh3";
Shema^.Shetchik[2].Sh_Number:=$2030;
MyList.Add(Shema);
New(Shema);
Shema^.ID:=$00002;
Shema^.Name:="test2";
SetLength(Shema^.Shetchik,4);
Shema^.Shetchik[0].ID:=$0002;
Shema^.Shetchik[0].Sh_Name:="sh1";
Shema^.Shetchik[0].Sh_Number:=$0010;
Shema^.Shetchik[1].ID:=$0002;
Shema^.Shetchik[1].Sh_Name:="sh2";
Shema^.Shetchik[1].Sh_Number:=$0110;
Shema^.Shetchik[2].ID:=$0003;
Shema^.Shetchik[2].Sh_Name:="sh3";
Shema^.Shetchik[2].Sh_Number:=$0030;
Shema^.Shetchik[3].ID:=$0004;
Shema^.Shetchik[3].Sh_Name:="sh4";
Shema^.Shetchik[3].Sh_Number:=$1130;
MyList.Add(Shema);


 
Alx2 ©   (2002-05-23 15:31) [1]

А каковы цели? Скорость доступа, простота работы, компактность, наглядность, простота хранения? (Только не говорите, что нужно все сразу 8-)


 
SergeyDon   (2002-05-23 16:03) [2]

простота работы и наглядность наверное больше сюда подходит.

А если честно так еще никогда неделал вот решил попробовать.
Интересно как делфи с динамически выделяемой паматью будет работать тут интересует пару вопросов:
1. когда делаю New(Shema) еще неизвестно сколько там будет
SetLength(Shema^.Shetchik, ? ) размер массива задаётся позже.?
2. отдельные элименты Shema будут то удалятся то вставлятся динамически как при том расход памяти (общий объём) ведь ощишенные куски могут занимать мало места для другой информации и наверное будут неиспользованными до выгрузки всей программы? а если таких кусков будет 1000.


 
Alx2 ©   (2002-05-23 16:37) [3]

>простота работы и наглядность наверное больше сюда подходит.
Я бы тогда делал на базе классов. Например, так:
type TShema = class
ID:cardinal;
Shetchik: array of TShetchik;
constructor Create(<твои параметры, которые собрался хранить>);
destructor Destroy; // В нем хороним Shetchik, например.
end;

А для хранения использовать TStringList.
Var StrLst : TStringList;
begin
StrLst := TStringList.Create;
StrLst.AddObject("test1",TShema.Create(<параметры1>));
StrLst.AddObject("test2",TShema.Create(<параметры2>));
StrLst.AddObject("test3",TShema.Create(<параметры3>));
А потом пользоваться методами TStringList - сортировка по Name, уничтожение/добавление etc. А про дыры, которые якобы останутся, можно первое время забыть.

>1. когда делаю New(Shema) еще неизвестно сколько там будет
>SetLength(Shema^.Shetchik, ? ) размер массива задаётся позже.?
Да. После того, как создан Shema


 
MBo ©   (2002-05-23 16:46) [4]

да и вместо Array of TShetchik может, лучше список использовать -мне кажется, они не требуют такой аккуратности, как динамические массивы


 
SergeyDon   (2002-05-23 17:21) [5]

re Alx2
при использовании классов в Create я так понял будет создаваться массив Shetchik: array of TShetchik который в destructor Destroy уничтожается.
А где уничтожать
ID:cardinal; {от TShema}
Name:string; {от TShema}
или это все там-же?


 
Alx2 ©   (2002-05-24 07:27) [6]

>А где уничтожать
> ID:cardinal; {от TShema}
> Name:string; {от TShema}

Их уничтожать не надо.



Страницы: 1 вся ветка

Текущий архив: 2002.06.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-18149
Mikeee
2002-05-03 13:38
2002.06.06
По какому событию...


1-17956
SPeller
2002-05-27 21:28
2002.06.06
Комилятор Дельфей


3-17825
ATLANTIDO
2002-05-16 17:05
2002.06.06
uncle_m16


1-17987
pusrg
2002-05-23 21:39
2002.06.06
Перехват нажатия клавиши


1-17891
Yuraz
2002-05-23 18:13
2002.06.06
Знатоки, кто знает как вписать ср-ми Delphi в RTF файл таблицу?