![]() |
Bitmap zurück geben und freigeben
Also es geht um folgenden Code:
Delphi-Quellcode:
Das Problem ist , dass ich als rückgabe eine leere Bitmap erhalte, und wenn ich Image im finally block nicht frei gebe klappt alles, bis auf das ich nach ner zeit keinen speicher mehr habe...
Image := TBitmap.Create;
... //Zurückgeben Result := Image; finally //Image frei geben Image.FreeImage; Image.Free; end; Was soll/muss ich anders machne? MfG |
Re: Bitmap zurück geben und freigeben
Übergib das Image doch als Parameter.
Delphi-Quellcode:
procedure TuWas(const Image: TBitmap);
begin //hier Dein Code end; procedure TFromBla.Blubb; var Image: TBitmap; begin Image := TBitmap.Create; try Image.Width := 100; Image.Height := 100; TuWas(Image); finally Image.Free; end; end; |
Re: Bitmap zurück geben und freigeben
ich würde es aber gerne so nutzen
Delphi-Quellcode:
GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,StaticObject.Appear());
TStaticObject.Appear() gibt eine Bitmap zurück die ich auf GameScreen zeichen will... ich müsste es nun alles umständlich mit einer weiteren tempbmp lösen
Delphi-Quellcode:
TStaticObject.Appear(TempBmp);
GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,TempBmp); //Das finde ich is doof |
Re: Bitmap zurück geben und freigeben
Lies Dir mal
![]() |
Re: Bitmap zurück geben und freigeben
Zitat:
Anderer Vorschlag: Warum nicht so?
Delphi-Quellcode:
Schliesslich hat StaticObject PosX, PosY und das Bitmap...
StaticObject.DrawAppear(GameScreen.Canvas);
Nachtrag zu deiner Lösung: (freigeben fehlte, try/finally nur Sicherheit)
Delphi-Quellcode:
TStaticObject.Appear(TempBmp);
try GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,TempBmp); //Das finde ich is doof finally TempBmp.Free; end; |
Re: Bitmap zurück geben und freigeben
Zitat:
also ich mach es dann gezwungener masen mit einem tmp bmp... thx |
Re: Bitmap zurück geben und freigeben
Delphi-Quellcode:
Ich erhalte eine zugriffsverletzung und zwar beim zeichen auf den GameScreen ( Paintbox )
//Wir zeichenen das statische Onject auf seine Position
TempBmp := TBitmap.Create; StaticObject.Appear(TempBmp); try GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,TempBmp); finally TempBmp.Free; end; wieso das jetzz? |
Re: Bitmap zurück geben und freigeben
Hmm... kann sein, dass ich jetzt Stuss schreibe, aber könnte es so gehen?
Delphi-Quellcode:
TempBmp := StaticObject.Appear;
try GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,TempBmp); finally TempBmp.Free; end; |
Re: Bitmap zurück geben und freigeben
Zitat:
|
Re: Bitmap zurück geben und freigeben
Code von Appear
Delphi-Quellcode:
Ich glaube der Fehle liegt bei Dest := Image; ka obs stimmt
function TStaticObject.Appear( var Dest: TBitmap ) : TBitMap;
var Image : TBitmap; begin try //Image erstellen Image := TBitmap.Create; { ... unwichtig ... } //"Zurück geben" Dest := Image; finally //Image frei geben Image.FreeImage; Image.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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