![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно убить TBitmap ?
dimushkin © (2003-05-30 09:46:00)
BM:=TBitmap.Create;
BM.Height:=36;
BM.Width:=36;
...
BM.Free;
казалось бы все правильно НО через определенное колличесво таких вот манипуляций возникает ошибка... такое чувство что паять то освобождается а ресурсы GDI текут...
может кто сталкивался?
panov (2003-06-03 11:42:00) [1]
>Evgeny © (03.06.03 06:09)
Это не усложнение.
Приведен лишь пример кода из Help.
90% вопросов отпадет, если немного подольше, нежели пара минут, поискать в справке Delphi.
Evgeny (2003-06-03 06:09:00) [2]
>panov © (01.06.03 23:13)
Ну и зачем в данном случае так усложнять?
Автор так и не привел код, а вы ломаете копья. Может быть он давно все сделал вот и не отзывается.
VMcL (2003-06-02 02:34:00) [3]
По-вашему в Borland идиоты?
>>Fenik © (31.05.03 11:37)<< правильно написал
panov (2003-06-01 23:13:00) [4]
procedure TForm1.Button1Click(Sender: TObject);
var
BitMap1,BitMap2 : TBitMap;
MyFormat : Word;
begin
BitMap2 := TBitMap.Create;
BitMap1 := TBitMap.Create;
try
BitMap1.LoadFromFile("c:\Program Files\common Files\Borland Shared\Images\Splash\256color\factory.bmp");
BitMap2.Assign(BitMap1); // Copy BitMap1 into BitMap2
BitMap2.Dormant; // Free up GDI resources
BitMap2.FreeImage; // Free up Memory.
Canvas.Draw(20,20,BitMap2); // Note that previous calls don"t lose the image
BitMap2.Monochrome := true;
( 80,80,BitMap2)
procedure TForm1.Button1Click(Sender: TObject);
var
BitMap1,BitMap2 : TBitMap;
MyFormat : Word;
begin
BitMap2 := TBitMap.Create;
BitMap1 := TBitMap.Create;
try
BitMap1.LoadFromFile("c:\Program Files\common Files\Borland Shared\Images\Splash\256color\factory.bmp");
BitMap2.Assign(BitMap1); // Copy BitMap1 into BitMap2
BitMap2.Dormant; // Free up GDI resources
BitMap2.FreeImage; // Free up Memory.
Canvas.Draw(20,20,BitMap2); // Note that previous calls don"t lose the image
BitMap2.Monochrome := true;
Canvas.Draw(80,80,BitMap2);
BitMap2.ReleaseHandle; // This will actually lose the bitmap;
finally
BitMap1.Free;
BitMap2.Free;
end;
end;
Плохой человек (2003-06-01 15:40:00) [5]> ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
( BM)>ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
if Assigned(BM) then BM:=NIL;
BM.Free именно это и делает и именно этим и отличается от BM.Destroy.
Song (2003-06-01 15:11:00) [6]
2WInAPi Lamer (01.06.03 14:48)
О как :)
WInAPi Lamer (2003-06-01 14:48:00) [7]ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
( BM)ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
if Assigned(BM) then BM:=NIL;
Fenik (2003-05-31 11:37:00) [8]
У меня прекрасно работает:
Bitmap := TBitmap.Create;
try
...
finally
Bitmap.Free;
end;
Evgeny (2003-05-31 07:41:00) [9]
Без исходного кода, трудно что-либо сказать, но возможно возникает ситуация когда освобождения битмапа не происходит. Если процесс динамический и часто повторяемый, то вот она и потеря ресурсов.
Плохой человек (2003-05-30 22:17:00) [10]
У меня похожее было. Я бы на вашем месте ещё перед этим делом делал бы FreeImage.
AlexT1000 (2003-05-30 15:28:00) [11]
дело не в битмапе. ищи ошибку в другом месте своей проги
Дмитрий К.К. (2003-05-30 15:23:00) [12]
Про try-finally-end не слыхал?
pasha676 (2003-05-30 12:39:00) [13]
Может надо
Bitmap.Free;
Bitmap:=nil;
Хотя лично мне кажется что ошибка не в битмапе.
dimushkin (2003-05-30 10:39:00) [14]
BM.FREE есть не что иное как :
if Assigned(BM) then BM.Destroy;
кстати так у меня в проге BM и убивается
:-(
Might (2003-05-30 10:31:00) [15]
Можно попробовать:
BM.Destroy