Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Freigabe des Bitmap Handles trotz Freigabe der TBitmap ? (https://www.delphipraxis.net/44044-freigabe-des-bitmap-handles-trotz-freigabe-der-tbitmap.html)

Thebe 12. Apr 2005 15:23


Freigabe des Bitmap Handles trotz Freigabe der TBitmap ?
 
Moin moin

Ich arbeite gerade stark mit Bitmaps die per Res Dateien mit in die EXE kompiliert werden und da fällt mir bei MSDN-Library durchsuchenLoadBitmap auf, das man die von LoadBitmap zurückgegebenen Handles wieder löschen muss via MSDN-Library durchsuchenDeleteObject.

Nur frage ich mich nun, muss ich um wirklich sauber zu sein im Punkto Speicherleck, das in der folgenden Situation benutzen ??

Delphi-Quellcode:
try
    BMP := TBitmap.Create;
    BMP.Handle := LoadBitmap(HInstance, 'IrgendEineBMP');

    BMP.TuIrgendwas;

    [...]

finally
    BMP.Free;
end;
Ich bin stark der Meinung ich müßte in diesem Falle das Handle nicht killen, lasse mich aber gerne berichtigen. Was meint ihr dazu ?? Und wenn ja, kann ich das Handle killen BEVOR ich die Bitmap wieder freigebe via

Delphi-Quellcode:
try
    [...]
finally
    DeleteObject(BMP.Handle);
    BMP.Free;
end;
Oder muss ich das Handle zwangsweise rückspeichern weil das Killen des Handles während es in Benutzung is auch das Bitmap verschießen würde ?

Vielen Dank schon mal im Vorraus

- Thebe

shmia 12. Apr 2005 17:31

Re: Freigabe des Bitmap Handles trotz Freigabe der TBitmap ?
 
Zitat:

Zitat von Thebe
Ich arbeite gerade stark mit Bitmaps die per Res Dateien mit in die EXE kompiliert werden und da fällt mir bei MSDN-Library durchsuchenLoadBitmap auf, das man die von LoadBitmap zurückgegebenen Handles wieder löschen muss via MSDN-Library durchsuchenDeleteObject.

Nur frage ich mich nun, muss ich um wirklich sauber zu sein im Punkto Speicherleck, das in der folgenden Situation benutzen ??

Delphi-Quellcode:
try
    BMP := TBitmap.Create;
    BMP.Handle := LoadBitmap(HInstance, 'IrgendEineBMP');

    BMP.TuIrgendwas;

    [...]

finally
    BMP.Free;
end;
Ich bin stark der Meinung ich müßte in diesem Falle das Handle nicht killen, lasse mich aber gerne berichtigen.

Du brauchst & darfst das Handle nicht explizit freigeben.
Das Handle wird in einem TBitmapImage gespeichert und in TBitmapImage.FreeHandle wieder freigegeben.
Mit der Zeile
Delphi-Quellcode:
    BMP.Handle := LoadBitmap(HInstance, 'IrgendEineBMP');
hast du die Verantwortung für das Handle an das Objekt BMP abgetreten.

Thebe 12. Apr 2005 18:14

Re: Freigabe des Bitmap Handles trotz Freigabe der TBitmap ?
 
Sauber, genau das wollt ich wissen. Danke schön.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz