![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
LoadImage [D7, WinXP]
parovoZZ © (2004-07-29 23:19:00)Как выгрузить картинку из памяти, если я её загрузил с помощью сабжа?
parovoZZ (2004-07-31 21:28:00) [1]Простите меня не грамотного, я DeleteObject(); делал при завершении программы, потому всё и падало.
GuAV (2004-07-31 00:06:00) [2]сам попробовал такое:
var h:hBitmap; I: Integer;
begin
for I:=0 to 9999 do
begin
h:=LoadImage(0,'D:\doc\prog\clouds.bmp',IMAGE_BITMAP,
0,0,LR_LOADFROMFILE or LR_CREATEDIBSECTION);
// Assert(h<>0);
DeleteObject(h);
end
end;
ничего не падает, пока не закоментируешь DeleteObject(h);
parovoZZ (2004-07-30 21:22:00) [3]Image := LoadImage (0, 'fon.bmp', Image_Bitmap, 0, 0, LR_LOADFROMFILE or LR_CREATEDIBSECTION);
GuAV (2004-07-30 14:58:00) [4]А какие флаги в последнем параметре?
parovoZZ (2004-07-30 11:21:00) [5]DeleteObject убивает переменную, а сама картинка остаётся в памяти. По крайней мере, если 10 раз в секунду присваивать Image := LoadImage (), то через какое-то время программа займёт все русурсы системы. DeleteObject не помогает.
GuAV (2004-07-29 23:26:00) [6]Remarks
When you are finished using a bitmap, cursor, or icon you loaded without specifying the LR_SHARED flag, you can release its associated memory by calling one of the functions in the following table.
Resource Release function
BitmapDeleteObject
CursorDestroyCursor
IconDestroyIcon
The system automatically deletes these resources when the process that created them terminates, however, calling the appropriate function saves memory and decreases the size of the process's working set.
т.е. можно вышеназванными ф-циями, а можно и не удалять.