Главная страница
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.012 c
14-18152
cok
2002-05-03 10:01
2002.06.06
Работа


14-18149
Mikeee
2002-05-03 13:38
2002.06.06
По какому событию...


1-17935
roman_tutov@mail.ru
2002-05-23 18:47
2002.06.06
Form.Close


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


14-18119
phantom2040
2002-04-30 10:40
2002.06.06
Turbo Vision