Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
ВнизВ динамическом массиве структур - динмчс. массив: возможно ли? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c