Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.012 c
8-99200
Серик
2002-09-13 18:14
2002.12.30
Как определить уровень сигнала подавамого на звуковую карту???


4-99409
Maksss
2002-11-15 02:33
2002.12.30
без SYSUTILS.PAS


7-99363
Wildcow
2002-10-23 17:45
2002.12.30
Имя юзверя


14-99320
asdf
2002-12-06 17:55
2002.12.30
Delphi & .NET


14-99288
kingdom
2002-12-06 20:06
2002.12.30
Нужна информация по Install Shield Professional ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский