Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-99197
Hammer1
2002-12-19 09:54
2002.12.30
Бинарный файл


1-99087
Hopkins
2002-12-15 19:32
2002.12.30
Как из Delphi вносить изменения в окнах апплетов ?


4-99420
Dimon14
2002-11-15 02:51
2002.12.30
Как отследить изменение битовой матрицы, например какя то часть д


1-99195
Nikolai_S
2002-12-18 15:19
2002.12.30
MapX! Кто-нибудь тесно работал с MapX? Как изменить стиль объекта


1-99190
harismatik
2002-12-18 19:20
2002.12.30
Путь к ветке дерева




   Наверх