? TImage oder TQRImage nach Gebrauch freigeben ?

Muß man TImage oder TQRImage nach Gebrauch freigeben ?

Die Methode TImage.Free oder TQRImage.Free sind in der Methodenliste nicht zu finden, aber Programm compiliert diese Methoden ohne Fehlermeldung.
Aber beim Run der Exe kommt ein Exception-Fehler.

Für einen Tip vielen Dank!

Gruß Eric

Hallo!

Muß man TImage oder TQRImage nach Gebrauch freigeben ?

Ein TImage muss immer dann freigegeben werden, wenn es auch dynamisch erzeugt wurde. Das ist doch bei jedem Objekt so.

Wenn Du im Source ein TImage definierst und diesem mit myImage = TImage.Create(argumente); Speicher zuweist, dann hast Du auch dafür zu sorgen, dass dieser Speicher wieder aufgelöst wird. myImage.Free; ist dort das richtige.
Verwende eine try…finally, wenn Du das TImage nur temporär benötigst und verwende den Konstruktor in OnCreate, den Destruktor in OnDestroy, wenn Du das TImage während der gesamten Laufzeit benötigst.

Ziehst Du ein TImage zur Entwurfszeit in Dein Formular ist dieses Image IDE-gesteuert. Borland übernimmt für Dich die Erzeugung und das Vernichten. Jedoch wird dann immer beim Starten und Beenden vernichtet.

Man kann den Speicher für die Bilddaten eines Images (und damit meine ich nur das enthaltene Bild) auch mit myImage.picture.graphic := nil; zurücksetzen. Dadurch wird das enthaltene Bild vernichtet.

Viel Erfolg!
Michael F. Bender

Re^2: Vielen Dank, Tip war gut !

Gruß

Eric