Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

динамические переменные [D5, WinXP]


Страницы:   1 2

Serguar ©   (2002-09-02 11:23:00) 

Привет Всем! Никак не могу разобраться почему вылетает программа на FreeMem(). У меня:

TKeyInfo = packed record
Id: Word;
NameId: String[32];
end;

PKeyInfoPack = ^TKeyInfoPack;
TKeyInfoPack = packed record
Count: Integer;
Data: array[1..MAX_ITEMS] of TKeyInfo;
end;

procedure TServer.WndProc(var AMsg: TMessage);
var
Pack: PKeyInfoPack;
begin
GetMem(Pack, KEY_PACK_SIZE);
try
Pack^.Count := Count;
for i := 0 to Pack^.Count - 1 do begin
Pack^.Data[i].Id := Gid;
Pack^.Data[i].NameId := GroupId;
end;
finally
FreeMem(Pack, KEY_PACK_SIZE);
end;
end;

После выхода из функции вылезает Access violation. Если пытаюсь что нибудь вывести перед FreeMem() - вылетает там.

Может кто посоветует что нибудь?
Заранее благодарен.


Skier   (2002-09-02 11:45:00) [21]

>Serguar
Аналогично McSimm © (02.09.02 11:42),тоже торможу (НЕ ПРАВИЛЬНО), но всё-таки что же в KEY_PACK_SIZE. Загадка...


Serguar   (2002-09-02 11:43:00) [22]

const
KEY_PACK_SIZE: Integer = SizeOf(TKeyInfoPack);


McSimm   (2002-09-02 11:42:00) [23]


> Serguar © (02.09.02 11:23)

Извиняюсь протормозил. Массив статический и KEY_PACK_SIZE расчитывать не надо.

Но убедиться что значение этой константы верно - нужно.


Skier   (2002-09-02 11:39:00) [24]

>Serguar
Видимо нужно так :

GetMem(Pack, Count * SizeOf(TKeyInfoPack));
//бла-бла-бла-бла-бла-
FreeMem(Pack, Count * SizeOf(TKeyInfoPack));


McSimm   (2002-09-02 11:28:00) [25]

KEY_PACK_SIZE надо вычислять в зависимости от Count


Skier   (2002-09-02 11:26:00) [26]

>Serguar
А это что такой KEY_PACK_SIZE ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо