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

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

Утечка памяти......в чем трабла??? [D7, WinXP]


malefik ©   (2003-09-09 13:33:00) 

var _file: Integer ;
_data, _date, _time: string ;
Buffer: PChar;
begin
try
_file := FileOpen(_FileName ,fmShareDenyNone);
Getmem(Buffer,_sizeFile + 1);
FileSeek (_file, _sizeFile-(_New_CountRecord*136) ,0);
FileRead(_file, Buffer^,136);
_date := _alarm_oven._ConvertDate(copy (Buffer,1,8));
_time :=copy (Buffer,10,8);
finally
FreeMem(Buffer);
FileClose(_file);
end;

При вызове данной функции в цикле несколько сотен раз
ВОзникает EOUTOFMEMORY...

Всё ли здесь правильно????


malefik   (2003-09-10 08:28:00) [1]

Sorry коллеги.....вопрос снят.....
>>clickmaker.. просмотрел внимательно....ругался он на STRINGGRID как ни странно ...
1.Читаю запись...
2. добавляю STRINGGRID одну строку свойством RowCount (ну так легче думал)....оказалось что он на этом затыкается...(видать маленько промах допустили программеры BORLAND...память течет видно невооруженным глазом)...
3. Добавляю прочитанные данные в STRINGGRID....


miek   (2003-09-09 23:39:00) [2]

А может, надо не copy(buffer,1,8) а copy(Buffer^,1,8)?


savva   (2003-09-09 18:24:00) [3]

а я бы написал вот так
FileRead(_file, Buffer^,136);
_date := _alarm_oven._ConvertDate(copy (Buffer^,1,8));


jack128   (2003-09-09 16:10:00) [4]

коректнее так

var _file: Integer ;
_data, _date, _time: string ;
Buffer: PChar;
begin
_file := FileOpen(_FileName ,fmShareDenyNone);
try
Getmem(Buffer,_sizeFile + 1);
try
FileSeek (_file, _sizeFile-(_New_CountRecord*136) ,0);
FileRead(_file, Buffer^,136);
_date := _alarm_oven._ConvertDate(copy (Buffer,1,8));
_time :=copy (Buffer,10,8);
finally
FreeMem(Buffer);
end;
finally
FileClose(_file);
end;
end;
Но не думаю, что ошибка из-за этого


clickmaker   (2003-09-09 13:43:00) [5]

Под отладчиком глянь, на какой строке вываливается аут оф мемори. Криминала в коде вроде нет

Кстати, а _sizeFile откуда берется?


Наверх

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