Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ungültige Zeigeroperation (https://www.delphipraxis.net/159670-ungueltige-zeigeroperation.html)

Moony 7. Apr 2011 14:13

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

stahli 7. Apr 2011 15:47

AW: Ungültige Zeigeroperation
 
Hast Du das Frame vielleicht irgendwo freigegeben?
Setze mal einen Haltepunkt und schau Dir das Frame mal genauer an...

Moony 8. Apr 2011 06:16

AW: Ungültige Zeigeroperation
 
Nee, die Frames werden in der Ondestroy Routine freigegeben. Ich habe einen Haltepunkt gemacht und Assigned(Frame) war nicht nil.

Bummi 8. Apr 2011 06:21

AW: Ungültige Zeigeroperation
 
:glaskugel:
Zitat:

Assigned(Frame)
nicht daß der Fehler von dort kommen müsste, aber ein Assigned heißt nicht dass das Objekt noch da sein muss ...

Moony 8. Apr 2011 06:52

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?

ibp 8. Apr 2011 07:07

AW: Ungültige Zeigeroperation
 
Zitat:

Zitat von Bummi (Beitrag 1093833)
:glaskugel:
Zitat:

Assigned(Frame)
nicht daß der Fehler von dort kommen müsste, aber ein Assigned heißt nicht dass das Objekt noch da sein muss ...

Code:
Assigned(Frame)
bedeutet nur, dass Frame <> Nil ist wenn der Ausdruck True ist!

Wie gibst du denn das Frame frei? Mit Free? Wenn ja dann versuch doch mal mit
Code:
FreeAndNil(Frame)

DeddyH 8. Apr 2011 07:12

AW: Ungültige Zeigeroperation
 
Genau, entweder mit FreeAndNil oder nach dem Free Objekt selbst auf nil setzen.

Moony 8. Apr 2011 07:42

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.

DeddyH 8. Apr 2011 07:48

AW: Ungültige Zeigeroperation
 
Zitat:

Beim Klick auf ein Image auf der Hauptform wird dann das Startframe zugewiesen:

Frame.Parent := fmMain;
Nur eine Idee:
Delphi-Quellcode:
procedure TfmMain.DeinImageClick(Sender: TObject);
begin
  if Sender is TImage then
    Frame.Parent := TImage(Sender).Parent;

Moony 8. Apr 2011 08:28

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 06:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz