Главная страница
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.01 c
1-17851
Maxr
2002-05-24 14:58
2002.06.06
Не запускаются программы вне IDE в Kylix


4-18191
Seroga
2002-03-29 20:39
2002.06.06
Какое событие происходит когда моя форма перестает быть активной?


3-17844
kserg@ukr.net
2002-05-15 12:22
2002.06.06
MSSQL-как можно число превратить в строку с ведущими нулями?


1-17922
KvORubin
2002-05-27 09:20
2002.06.06
Проблеммы с кодировками!!!


1-18001
Ferrarium
2002-05-24 09:19
2002.06.06
Помогите с компонентом