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

Вниз

В динамическом массиве структур - динмчс. массив: возможно ли?   Найти похожие ветки 

 
BorisKb ©   (2002-12-19 10:04) [0]

type
SumKod=Record
kod: Integer;
naim: String;
SumMesKod: Array of Currency;
end;
Var Nac: Array of SumKod;

Кто-нибудь работал с такой конструкцией? В принципе возможно?
Как только делаю: SumMesKod: Array[1..10] of Currency - все проходит отлично. А с динамическим массивом в динамическом массиве структур (записей) - постоянно гроблю память.
Код не привожу сознательно, меня интересует принципиальная возможность и особенности работы с такой конструкцией(если есть таковые).
Благодарю за сотрудничество.


 
zavdim ©   (2002-12-19 10:09) [1]

ну я работал.
работать надо, конечно, аккуратно и лучше типы все-таки с буквы T начинать.
То есть - принципиальная возможность есть. Дальше не говорю сознательно - не знаю почему (противоречие однако).


 
Skier ©   (2002-12-19 10:15) [2]

>BorisKb
Почитай про SetLength(...) и Finalize(...)


 
NailS ©   (2002-12-19 10:16) [3]


> BorisKb ©

Может стоит присмотрется к TList?
Просто в моей практике необходимость в динамическом массиве возникала только при работе с бинарными данными, в остальных случаях удобней было использовать TList


 
BorisKb ©   (2002-12-19 10:16) [4]

Благодарю еще раз. Значит это мои старческие, толи глаза, толи мозги не видят чего-то. Буду смотреть :)


 
AlexSV ©   (2002-12-19 10:16) [5]

> ... В принципе возможно?
Да.

procedure InitRec;
var
SizeSumMesKod, SumMesKodID : integer;
begin
SizeSumMesKod := 10;
new(SumKod);
with SumKod do begin
kod := 1;
naim := "naim1";
SetLength(SumMesKod, SizeSumMesKod);
for SumMesKodID := 0 to SizeSumMesKod - 1 do
SumMesKod[SumMesKodID] := <ValueOfCurrency>;
end;
end;

Только при освобождении памяти записи необходимо освобождать и динамический массив.


 
BorisKb ©   (2002-12-19 10:28) [6]

Код от AlexSV не совсем корректен в моем случае. Я до последней считанной записи не знаю ни кол-ва записей ни кол-ва элементов массивов в этих записях.


 
zavdim ©   (2002-12-19 10:38) [7]

length(Nac);
length(Nac[i].SumMesKod);
for i :=0 to Pred(length(Nac)) do Nac[i].......


 
icWasya ©   (2002-12-19 11:44) [8]

а по поводу утечки памяти посмотрите реализацию TStringList -
там за каждым элементом стоит структура
record
S:String;
O:TObject;
end;
то есть не динамический массив, а строка, но если неаккуратно работать, то будут возникать проблемы с памятью.
Посмотрите, как реализуются изменение длины списка, удаление элементов, обмен ...



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
1-99185
Alex-Barmaley
2002-12-19 06:47
2002.12.30
Надо перекодить KOI8 - Win


3-98977
tanuha
2002-12-10 10:21
2002.12.30
Работа с DBGrid


3-98969
slgeo
2002-12-09 11:47
2002.12.30
Не могу изменить данные


4-99395
Romeo
2002-11-14 10:10
2002.12.30
Автоматический Логон


3-99029
Jdrm
2002-12-11 11:18
2002.12.30
Глюки с RecordCount