![]() |
Problem mit TIcon und FreeAndNil
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich hab im OnCreate der Form folgenden Code:
Delphi-Quellcode:
und Im OnDestroy das:
//Icons erzeugen
IconRot := TIcon.Create; IconGelb := TIcon.Create; IconGruen := TIcon.Create; IconBlau := TIcon.Create; try //versuchen IconRot beschreiben IconRot.LoadFromFile(drive_Icon_rot); except //ansonsten Applications-Icon laden IconRot := Application.Icon; end; try //versuchen IconGelb beschreiben IconGelb.LoadFromFile(drive_Icon_gelb); except //ansonsten Applications-Icon laden IconGelb := Application.Icon; end; try //versuchen IconGruen beschreiben IconGruen.LoadFromFile(drive_Icon_gruen); except //ansonsten Applications-Icon laden IconGruen := Application.Icon; end; try //versuchen IconBlau beschreiben IconBlau.LoadFromFile(drive_Icon_blau); except //ansonsten Applications-Icon laden IconBlau := Application.Icon; end;
Delphi-Quellcode:
Wenn jetzt im OnCreate das Icon nicht geladen werden kann (egal ob rot, gelb, grün oder blau) und ich die Form beende dann bekomme ich 2 Fehler (siehe Anhang).
//Icons freigeben und löschen
FreeAndNil(IconRot); FreeAndNil(IconGelb); FreeAndNil(IconGruen); FreeAndNil(IconBlau); Was kann das sein? Ich hab schon mal überprüft ob wirklich auch in den except-Block reingesprungen wird und das wird auch gemacht. |
Re: Problem mit TIcon und FreeAndNil
das kommt von
Delphi-Quellcode:
TIcon ist nix anderes als ein Pointer.
IconRot := Application.Icon;
Wenn du jetzt das obige aufrufst zeigt IconRot auf den speicher Application.Icon. Und wenn du dann FreeAndNil(IconRot) aufrufst wird der Speicher von Application.Icon freigegeben. Du müsstest einfach
Delphi-Quellcode:
IconRot.Assign(Application.Icon)
|
Re: Problem mit TIcon und FreeAndNil
Danke Sir Thornberry
das hat funktioniert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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 by Thomas Breitkreuz