Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Freigeben von Bitmap funktioniert nicht (https://www.delphipraxis.net/58405-freigeben-von-bitmap-funktioniert-nicht.html)

gordon freeman 6. Dez 2005 16:18


Freigeben von Bitmap funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,
ich habe ein Objekt TBildbearbeiter, dass in seinem Constructor ein Bitmap erzeugt. Das Objekt eine Prozedur, in der mit dem erzeugten Bitmap gearbeitet wird, im Destructor wird das Bitmap dann wieder freigegeben. Allerdings bekomme ich an der Stelle immer eine AV. Wenn ich die Zeile auskommentiere geht es.

Delphi-Quellcode:
TBildbearbeiter = class
  hBild : TBitmap;
//etc...

constructor Create();
begin
  hBild := TBitmap.Create;
end;

function SchwarzWeissBild(pBild:TBitmap):TBitmap;
begin
  hBild := pBild;
  //Das Bitmap wird verändert, Canvas Befehle, etc....
  result := hBild;
end;

destructor Destroy();
begin
  hBild.destroy; //hier kommt die AV, außer wenn ich auskommentiere, auch free geht nicht
end;
Ich häng das Programm nochmal an, falls es sich einer nochmal mit Aufruf, etc. angucken will.


tia, mfg, gordon :dp:

Khabarakh 6. Dez 2005 16:29

Re: Freigeben von Bitmap funktioniert nicht
 
Zitat:

Zitat von gordon freeman
Delphi-Quellcode:
  hBild := pBild;

Hier weist du dem Feld das Bitmap des Images zu, dieses wird aber natürlich vom Image selbst freigegeben. Wenn du es zusätzlich freigeben willst, knallt es.

gordon freeman 6. Dez 2005 16:44

Re: Freigeben von Bitmap funktioniert nicht
 
Ich brauch hBild nicht freigeben?! :wall:

okay, danke für die schnelle Antowrt :dp: :cheers:

Khabarakh 6. Dez 2005 16:52

Re: Freigeben von Bitmap funktioniert nicht
 
Wenn es nur eine Referenz auf ein Objekt ist, dass von einer anderen Klasse verwaltet und freigegeben wird, nein.
Allerdings erzeugst mit
Delphi-Quellcode:
hBild := pBild;
ein Speicherleck, da du den einzigen vorhandenen Pointer auf das im Konstruktor erstellte Bitmap fortwirfst.

jim_raynor 6. Dez 2005 16:55

Re: Freigeben von Bitmap funktioniert nicht
 
Ergo, du brauchst auch das TBitmap.Create nicht ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.

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