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

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

Процедура бесконтрольно ест память [D7]


Страницы:   1 2

Реактор ©   (2004-08-16 19:15:00) 

procedure TForm1.SendScreenImageToClipboard;
var   bmp: TBitmap;
begin
bmp := TBitmap.Create;
try
 bmp.Width := Image1.Width;
 bmp.Height := Image1.Height;
 BitBlt(bmp.Canvas.Handle, 0, 0, StrToInt ( Edit3.Text), StrToInt ( Edit4.Text), GetDC(GetDesktopWindow), StrToInt ( Edit1.Text), StrToInt ( Edit2.Text), SRCCopy);
 Clipboard.Assign(bmp);
finally
 bmp.Free;
end;
Image1.Picture.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_BitMap),0);
Clipboard.Free;
end;


Вот эта процедура делает копию кусочка экрана в окно моей программы (в Image1) через буфер. Делает это она много много раз (копирует, потом анализирует, потом снова копирует, потом снова анализирует и т.д.). И вот эта процедура резервирует память, но по завершению не высвобождает ее. Что надо дописать, что бы вся резервируемая память высвобождалась по окончанию выполнения процедуры?


TUser   (2004-08-16 21:09:00) [21]

Во-первых надо писать ReleaseDC, а еще - Clipboard.Free не нужен. Вообще Clipboard не нужен


Страницы:   1 2

Наверх

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