![]() |
Ungültige Zeigeroperation
Hi, zusammen,
ich habe ein Progrämmchen bei dem ich mit einer Hauptform arbeite und innerhalb der Laufzeit wenn benötigt unterschiedliche Frames dynamisch der Hauptform mit Frame.Parent := fmMain; zuweise.In den bisherigen Routinen funktioniert das, aber jetzt bei einer neuen Operation funktioniert das Zuweisen eines Frames nicht mehr, obwohl die gleichen Reset-Operationen durchgeführt werden: Self.Parent := nil; ... Beim Klick auf ein Image auf der Hauptform wird dann das Startframe zugewiesen: Frame.Parent := fmMain; Frame.Left := 0; Frame.Top := 0; Beim Zuweisen von fmMain gibt es folgende Fehlermeldung: Im Projekt ist eine Exception der Klasse EInvalidPointer mit der Meldung 'Ungültige Zeigeroperation' aufgetreten. Ich habe keine Ahnung warum diese Exception auftritt. Hoffe auf eure schnelle Hilfe.... Danke & Gruß, Moony |
AW: Ungültige Zeigeroperation
Hast Du das Frame vielleicht irgendwo freigegeben?
Setze mal einen Haltepunkt und schau Dir das Frame mal genauer an... |
AW: Ungültige Zeigeroperation
Nee, die Frames werden in der Ondestroy Routine freigegeben. Ich habe einen Haltepunkt gemacht und Assigned(Frame) war nicht nil.
|
AW: Ungültige Zeigeroperation
:glaskugel:
Zitat:
|
AW: Ungültige Zeigeroperation
Ok, aber warum funktioniert es an anderer Stelle mit anderen Frames im Projekt? Wie kann ich dann feststellen, dass ein Frame nicht freigegeben wurde?
|
AW: Ungültige Zeigeroperation
Zitat:
Code:
bedeutet nur, dass Frame <> Nil ist wenn der Ausdruck True ist!
Assigned(Frame)
Wie gibst du denn das Frame frei? Mit Free? Wenn ja dann versuch doch mal mit
Code:
FreeAndNil(Frame)
|
AW: Ungültige Zeigeroperation
Genau, entweder mit FreeAndNil oder nach dem Free Objekt selbst auf nil setzen.
|
AW: Ungültige Zeigeroperation
Ok, das kann ich auch versuchen. Aber der Punkt ist, dass zu diesem Zeitpunkt das Frame nicht freigegeben werden soll und somit auch die Routine nicht aufgerufen wird. Wenn ich das Parent vom Frame = nil setze und anschließend einem anderem Frame meine Hauptform als Parent zuweisen will, dann bekomme ich die Zeigerexception.
|
AW: Ungültige Zeigeroperation
Zitat:
Delphi-Quellcode:
procedure TfmMain.DeinImageClick(Sender: TObject);
begin if Sender is TImage then Frame.Parent := TImage(Sender).Parent; |
AW: Ungültige Zeigeroperation
Theoretisch ginge das, aber praktisch nicht, da nicht der Sender als Parent zugewiesen werden muss, sondern die Hauptform.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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