AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EInvalidPointer - Ungültige Zeigeroperation

Ein Thema von DerAndereMicha · begonnen am 8. Mai 2009 · letzter Beitrag vom 8. Mai 2009
Antwort Antwort
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#1

EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 14:36
Hallo,

wie kann es sein, daß es beim Konstrukt

Delphi-Quellcode:

Form2:=TForm2.Create(application);
Try
   Form2.Showmodal;
Finally
   Form2.free;
End;
bei Form2.Free manchmal zu einer EInvalidPointer-Exception kommt?

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 14:40
Wenn ein Owner angegeben wird, kümmert der sich auch um das Freigeben.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 14:45
Und warum sollte das die Application nur manchmal machen? Besonders während das Programm noch läuft ...

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 14:50
Nun weiß ich nicht, wie die Mechanismen dahinter genauer sind, da ich mich da mehr in C/Java auskenne. Aber wenn dort auch eine Art Garbage-Collector benutzt wird kann es natürlich sein, dass nach dem Zurückkehren aus ShowModal manchmal dein Programm schneller im entfernen ist, als der Garbage Collector.
Aber ich glaube mich zu entsinnen, das bei Angabe eines Parents dieser erst nach Zerstörung seinerselbst alle ihm zugeordneten Child-Elemente zerstört.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 15:05
Der Meinung bin ich eben auch - deshalb find ich die Meldung etwas seltsam.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#6

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 15:15
passiert das auch, wenn du nun statt des application ein nil übergibst?

eventuell liegt es ja auch an was anderem


PS:
Delphi-Quellcode:
constructor TComponent.Create(AOwner: TComponent);
begin
  FComponentStyle := [csInheritable];
  if AOwner <> nil then AOwner.InsertComponent(Self);
end;
allerdings wird dieses nicht wieder entfernt, was du selber machen müßtest
(denn wenn jetzt Application mal seine Child-Liste durchgeht und seine Kinder etwas fragen will, dann knallt es schonmal, wenn ein Kind plötzlich einfach so fehlt, es aber nicht bescheidgesagt hat)

Delphi-Quellcode:
Form2:=TForm2.Create(application);
Try
   Form2.Showmodal;
Finally
   Application.RemoveComponent(Form2);
   Form2.free;
End;
oder eben
Delphi-Quellcode:
Form2:=TForm2.Create(nil);
Try
   Form2.Showmodal;
Finally
   Form2.free;
End;
[add]
ich seh grad ... im Destructor
  if FOwner <> nil then FOwner.RemoveComponent(Self);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 15:25
Die Exception trat heut zum ersten Mal auf (nach 3 Monaten), da ist es schwer festzustellen, ob sie mit einem nil als Owner nicht aufgetreten wäre - jetzt funktionierts ja wieder alles ohne Probleme. Zumal ich immer die Application als Owner verwende und mir bei diesem Konstrukt noch nie ne Exception an dieser Stelle untergekommen ist. Vielleicht lag das Problem ja wirklich wo anders - nur wo?

Edit: Ich werde es mal mit Deinem Konstrukt probieren und sehen ob der Fehler wieder auftritt. Danke.

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: EInvalidPointer - Ungültige Zeigeroperation

  Alt 8. Mai 2009, 15:32
Wer weiß, was da an der Speicherstelle passiert ist und in dem Moment wirklich gestanden hat. Ich übergebe auch immer Self als Parameter und hab damit noch nie Probleme gehabt.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
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