AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Prüfen, ob Bitmap leer ist ?
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob Bitmap leer ist ?

Ein Thema von Martin K · begonnen am 5. Jul 2006 · letzter Beitrag vom 5. Jul 2006
 
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#14

Re: Prüfen, ob Bitmap leer ist ?

  Alt 5. Jul 2006, 19:32
Hallo,
Zitat von Martin K:
Hmm...
Und was ist in der Praxis besser ?
das kommt immer darauf an. Beide Befehle machen im Grunde das Selbe. Der einzige Unterschied ist, dass die Objektvariable bei FreeAndNil auf nil gesetzt wird, während sie bei .Free weiterhin auf den (nun nicht mehr benutzten) Speicher zeigt. Wenn Du also über eine Objektreferenz entscheiden willst, ob sich dahinter auch wirklich ein gültiges Objekt verbirgt, ist FreeAndNil die richtige Wahl.
Hier mal ein Beispiel:
Delphi-Quellcode:
Bitmap := TBitmap.Create;
Bitmap.Free;
if Assigned(Bitmap) then // Assigned sagt True, weil Bitmap <> nil
  Bitmap.Width := 10; // Hier kracht's
Delphi-Quellcode:
Bitmap := TBitmap.Create;
FreeAndNil(Bitmap);
if Assigned(Bitmap) then // Assigned sagt False, weil Bitmap = nil
  Bitmap.Width := 10; // Wird nie ausgeführt
Aber jetzt mal zurück zum Thema:
TBitmap.FreeImage macht genau das, was auch in der Hilfe steht: Es gibt Speicher frei, was sich auf das Bitmap auswirken kann. Ein solcher Aufruf löscht nicht das Bitmap.

Wenn ich ein Bitmap löschen möchte, gehe ich immer so vor:
Delphi-Quellcode:
OldHeight := Bitmap.Height;
Bitmap.Height := 0;
Bitmap.Height := OldHeight;
Damit sage ich dem TBitmap, dass es bitte ein neues Bitmap (Windows-Objekt, nicht Delphi-Objekt) anlegen soll. Leider gibt es keine fertige Funktion, die sowas macht.

Gruß
xaromz
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 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