![]() |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Zitat:
Mach ambesten folgendes: * Breakpoint bei der Position wo der Fehler kommt * Breakpoint im Destroy von der Klasse So nun schliesst du deine Exe und springst solange weiter bis du im Destroy angekommen bist. Wird der andere Breakpoint danach noch aufgerufen? |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Hurra, erster Erfolg: Er kommt tatsächlich noch mal da vorbei. Abver mir ist sehr schleierhaft, wo der Aufruf herkommen soll...
Die Prozedur, in der er vorbeikommt und wo der Fehler auftaucht wird nur bei einer Größenänderung (OnResize) und im Constructor aufgerufen... :gruebel: Edit: Nachtrag: Wenn ich das Bild.Free; aus dem Destructor rausnehme, gehts logischerweise. Aber das ist dann ja nicht mehr saubere OOP, oder? |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Naja, ist im Prinzip auch egal, wenn das Programm beendet ist, wird der Speicher sowieso freigegeben. Aber ich frag mich auch, wieso das noch kracht - irgendwas ruft offenbar noch den Destruktor von dem Bild auf, aber wenn du keinen Owner übergibst, wer könnte das denn dann noch sein?
|
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Zitat:
Gebe deine Klasse nicht mit Bild.Free sondern mit FreeAndNil(Bild) frei. Dann versiehst du jeden Aufruf von Bild mit:
Delphi-Quellcode:
if Bild <> nil then Bild.Irgendwas;
|
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Deshalb auch meine Frage aus
![]() |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Selbst die Krücke geht nicht...
bin so langsam am verzweifeln.... |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Jetzt prüf doch nochmal alles durch, ob
- die Klasse in jedem Fall erzeugt und - sie nicht vor dem Aufruf des Destruktors freigegeben wird |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Mal eine (blöde) Frage, um was für ein Bild handelt es sich denn ( JPEG ) ?
Ich frage deswegen: ungefähres Zitat ... Wenn ich das mit einem anderem Bild mache, klappt es ... |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Zitat:
aber wenn das auch "Klasse" ist, dann liegt da vermutlich wirklich das Problem. PS: [TImage].Left greift auf dessen Owner zu ... drumm sollte da besser mal alles korrekt ablaufen!
Code:
und hier ... welchen Wert hat Klasse denn vorher?
[b]initialization[/b]
[color=#ff0000]Klasse[/color] := TKlasse.Create([color=#0000ff]Klasse[/color]); //Ob das wohl so stimmt??? [b]end[/b]. ich vermute aber mal, daß Klasse irgendwo als eine globale Variable definiert ist, weswegen sie wohl zufällig den wert NIL enthält und warum es rein zufällt, bei diesem Aufruf nicht kracht. ([TImage].Create greift auch auf den Owner zu, wenn er existiert, also nicht NIL ist) ja und Klasse is nicht Klasse ... es sind 2 unterschiedliche Inhalte. |
Re: Zugriffsverletzung bei Adresse 00000000 bei TImage
Also: 1. Ich arbeite da mit leeren Bildern, da ich nur die Hover- und OnClick- Eigenschaften brauche. Wenn dafür jemand ne bessere Idee hat, dann könnte ich das Ganze komplett umgehen.
Also sollte ich beim Create besser
Delphi-Quellcode:
schreiben, oder wie sonst?
Klasse := TKlasse.Create(Application);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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