AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Free von XML-Komponente führt zu EInvalidPointer exception
Thema durchsuchen
Ansicht
Themen-Optionen

Free von XML-Komponente führt zu EInvalidPointer exception

Offene Frage von "himitsu"
Ein Thema von michele_tedesco · begonnen am 31. Mär 2014 · letzter Beitrag vom 31. Mär 2014
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 11:33
Das passiert womöglich nicht beim Free, sondern hier:
Delphi-Quellcode:
procedure TXMLData.XMLToTree(var Tree: TTreeView; const FileName: String);
var
  Doc: IXMLDocument;
begin
  Doc := NewXMLDocument;
  Doc.LoadFromFile(FileName);
  Doc.Active; // Diese Zeile macht nichts. Es muß heißen Doc.Active := True
  IterateXMLNodes(Doc.DocumentElement, nil, Tree);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 11:54
Da hier an vielen Stellen mit Interfaces gearbeitet wird, solltest du dringend auch die XML-Klasse nur via Interface verwenden!
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
michele_tedesco

Registriert seit: 19. Mär 2014
50 Beiträge
 
#3

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 12:28
Da hier an vielen Stellen mit Interfaces gearbeitet wird, solltest du dringend auch die XML-Klasse nur via Interface verwenden!
Das ist mein nächster Schritt, jedoch will ich verstehen, wo der Fehler passiert, um diesen Fehler dann nicht mehr zu machen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 12:56
jedoch will ich verstehen, wo der Fehler passiert, um diesen Fehler dann nicht mehr zu machen
Wenn durch die Aufrufe der untergeordneten Interfaces die Referenzzählung in dem Interface-Objekt der XML-Klasse verändert werden, dann übernimmt die Referenzzählung die Kontrolle über das Objekt und ab dann darf Free nicht mehr aufgerufen werden.

Entweder die Freigabe eines Objektes geschieht manuell
oder die Freigabe geschieht ausschließlich über die automatische Referenzzählung. (also über Variablen des Interfacetyps, wobei es möglichst keine Objektreferenzen geben sollte)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 12:30
Wenn das Create schon gar nicht funktioniert, gibt's auch nichts das man freigeben könnte. Deswegen sollte das Create außerhalb vom try stehen.

Delphi-Quellcode:
  
XMLData := TXMLData.Create;
try
  XMLData.XMLToTree(tvXML, odXMLFile.FileName);
finally
  XMLData.Free;
end;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
michele_tedesco

Registriert seit: 19. Mär 2014
50 Beiträge
 
#6

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 12:51
gefunden

Ich habe beim Zuweisen von .Data eines TreeItem "Pointer(XMLAttribute)" geschrieben, weil ich mit Interfaces am spielen war.
Hatte nicht fertig aufgeräumt.

Der korrekte Aufruf ist natürlich TreeItem.Data := Object , nicht TreeItem.Data := Pointer(Object)
  Mit Zitat antworten Zitat
michele_tedesco

Registriert seit: 19. Mär 2014
50 Beiträge
 
#7

AW: Free von XML-Komponente führt zu EInvalidPointer exception

  Alt 31. Mär 2014, 12:27
Das passiert womöglich nicht beim Free, sondern hier:
Delphi-Quellcode:
procedure TXMLData.XMLToTree(var Tree: TTreeView; const FileName: String);
var
  Doc: IXMLDocument;
begin
  Doc := NewXMLDocument;
  Doc.LoadFromFile(FileName);
  Doc.Active; // Diese Zeile macht nichts. Es muß heißen Doc.Active := True
  IterateXMLNodes(Doc.DocumentElement, nil, Tree);
end;

Danke für dein Feedback , aber das hat das Problem nicht gelöst
  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 00:45 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