Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
Как правильно убить TBitmap ? Найти похожие ветки
← →
dimushkin (2003-05-30 09:46) [0]BM:=TBitmap.Create;
BM.Height:=36;
BM.Width:=36;
...
BM.Free;
казалось бы все правильно НО через определенное колличесво таких вот манипуляций возникает ошибка... такое чувство что паять то освобождается а ресурсы GDI текут...
может кто сталкивался?
← →
Might (2003-05-30 10:31) [1]Можно попробовать:
BM.Destroy
← →
dimushkin (2003-05-30 10:39) [2]BM.FREE есть не что иное как :
if Assigned(BM) then BM.Destroy;
кстати так у меня в проге BM и убивается
:-(
← →
pasha676 (2003-05-30 12:39) [3]Может надо
Bitmap.Free;
Bitmap:=nil;
Хотя лично мне кажется что ошибка не в битмапе.
← →
Дмитрий К.К. © (2003-05-30 15:23) [4]Про try-finally-end не слыхал?
← →
AlexT1000 © (2003-05-30 15:28) [5]дело не в битмапе. ищи ошибку в другом месте своей проги
← →
Плохой человек (2003-05-30 22:17) [6]У меня похожее было. Я бы на вашем месте ещё перед этим делом делал бы FreeImage.
← →
Evgeny © (2003-05-31 07:41) [7]Без исходного кода, трудно что-либо сказать, но возможно возникает ситуация когда освобождения битмапа не происходит. Если процесс динамический и часто повторяемый, то вот она и потеря ресурсов.
← →
Fenik © (2003-05-31 11:37) [8]У меня прекрасно работает:
Bitmap := TBitmap.Create;
try
...
finally
Bitmap.Free;
end;
← →
WInAPi Lamer (2003-06-01 14:48) [9]ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
( BM) ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
if Assigned(BM) then BM:=NIL;
← →
Song © (2003-06-01 15:11) [10]2WInAPi Lamer (01.06.03 14:48)
О как :)
← →
Плохой человек (2003-06-01 15:40) [11]> ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
( BM) >ОШИБКА НЕ В БИТМАПЕ А В НЕХВАТКЕ РЕСУРСОВ КОМПА.
ЧТО БЫ НЕ ВОЗНИКАЛО ЭТОЙ ОШИБКА НУЖНО
if Assigned(BM) then BM.Destroy
ИЛИ
if Assigned(BM) then BM:=NIL;
BM.Free именно это и делает и именно этим и отличается от BM.Destroy.
← →
panov © (2003-06-01 23:13) [12]
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;
← →
VMcL © (2003-06-02 02:34) [13]По-вашему в Borland идиоты?
>>Fenik © (31.05.03 11:37)<< правильно написал
← →
Evgeny © (2003-06-03 06:09) [14]>panov © (01.06.03 23:13)
Ну и зачем в данном случае так усложнять?
Автор так и не привел код, а вы ломаете копья. Может быть он давно все сделал вот и не отзывается.
← →
panov © (2003-06-03 11:42) [15]>Evgeny © (03.06.03 06:09)
Это не усложнение.
Приведен лишь пример кода из Help.
90% вопросов отпадет, если немного подольше, нежели пара минут, поискать в справке Delphi.
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.033 c