Главная страница
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
3-17764
HydraMarat
2002-05-14 18:18
2002.06.06
Create dBase, Paradox, etc.


4-18183
Sender
2002-04-02 18:42
2002.06.06
ПОМОГИТЕ!!!


3-17801
archey
2002-05-15 15:12
2002.06.06
добавить запись в access


1-18013
FireWorks
2002-05-24 11:28
2002.06.06
MapInfo


1-17855
Smok_er
2002-05-24 11:56
2002.06.06
Помогите пожалуйста найти правильное решение