![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Процедура бесконтрольно ест память [D7]
Реактор © (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 не нужен