Einzelnen Beitrag anzeigen

Benutzerbild von mcmichael
mcmichael

Registriert seit: 5. Jun 2008
Ort: Bremen
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: XML Problem beim Einlesen

  Alt 4. Okt 2009, 09:48
Danke für den Kommentar himitsu - mit XML haben hier scheinbar nicht wo viele was am Hut.
Im Forum sind viele Threads die ohne Lösung enden.

Also: der Grund für das (scheinbare) Nicht-Funktionieren war, daß ich in ListBox1 reingeschrieben habe,
mein Blick aber auf die dafür extra eingerichtete ListBox2 geheftet war.

Die Exception kam beim zweiten Aufruf, denn am Ende des ersten Aufrufs steht: XMLDocument1.Free;

mit
Zitat:
muß ich immer die gleichen Prozeduren aufrufen um die Struktur zu erzeugen?
meinte ich was ich tun muß wenn ich die Datei nicht finde oder sie fehlerhaft ist.
Ich versuche das jetzt über den EDOMParseError zu erreichen, der angeblich
bei Active:=true erzeugt wird.
Delphi-Quellcode:
procedure TForm2.Button7Click(Sender: TObject);
var i:integer;
    app:IXMLNode;
begin
   try
     XMLDocument1.LoadFromFile('d:\texst.xml');
     XMLDocument1.Active := True;
   except On E: EDOMParseError do
        begin
          XMLDocument1.Version := '1.0';
          XMLDocument1.StandAlone := 'yes'; //hier kommt jetzt die Zugriffsverletzung:
          XMLDocument1.Encoding := 'UTF-8';
          XMLDocument1.Options := [doNodeAutoIndent];
          XMLDocument1.AddChild('WRT');
          XMLDocument1.SaveToFile('d:\Texst.xml');
        end;
  end;
  //XMLDocument1.Active:=true;
  ListBox2.Items.Clear;
  ListBox2.Items.Add(XMLDocument1.DocumentElement.NodeName);
  for i := 1 to 5 do
    begin
    app:=XMLDocument1.DocumentElement.ChildNodes['applicant_'+IntToStr(i)];
    ListBox2.Items.Add(app.ChildNodes['family_name'].text);
  end;
  XMLDocument1.Active:=false;
end;
Wenn die Datei vorhanden ist (text.xml ist vorhanden, texst.xml nicht) listet er die Inhalte auf,
ist sie nicht vorhanden kommt folgende Zugriffsverletzung:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt test_xml.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0049935B in Modul 'test_xml.exe'. Lesen von Adresse 00000000' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Ich wollte an der Stelle an der klar ist, daß etwas mit der Datei nicht stimmt, die Struktur neu erzeugen um sie dann weiter zu befüllen.

Deine Bemerkung über doNodeAutoCreate kann ich nicht nachvollziehen, warum sollte diese Option eine Exception erzeugen?
  Mit Zitat antworten Zitat