Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Fr 10.12.10 00:27 
Hallo,
ich benutze die Komponent TJvSimpleXML um XML Datei auszulesen.
Nun habe ich testhalber mal versuch den Verlauf von MSN auszulesen, diese sind ja auch in .xml gespeichert.

Hier mal mein Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
JvSimpleXML1.FileName := GetSpecialFolder(Handle, CSIDL_PERSONAL)+'\Meine empfangenen Dateien\'+ListBox1.Items.Strings[ListBox1.ItemIndex]+'\Verlauf\'+ListBox2.Items.Strings[ListBox2.ItemIndex];

for i:=0 to JvSimpleXML1.Root.Items.Count-1 do begin
  Nachricht := JvSimpleXML1.Root.Items.Item[i].Items.ItemNamed['Text'].Value;
  Von := JvSimpleXML1.Root.Items.Item[i].Items.ItemNamed['From'].Items.ItemNamed['User'].Value;
end;


Das 1te funktioniert, nur beim 2ten bekomme ich eine Zugriffsverletzung:
ausblenden Delphi-Quelltext
1:
Von := JvSimpleXML1.Root.Items.Item[i].Items.ItemNamed['From'].Items.ItemNamed['User'].Value;					


Habe ich Vielleicht etwas falsch gemacht?

Ich bedanke mich schonmal im Voraus.

MfG
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.12.10 05:53 
Der Knoten User ist ja auch leer.

Der hat aber ein Attribut FriendlyName, warum liest du das nicht aus? Ich vermute einmal den Inhalt davon suchst du.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 11.12.10 02:28 
Danke Dir.

Ja, ich möchte den Inhalt auslesen, leider klappt das immer noch nicht, ich bekomme dann eine Zugriffsverletzung:
ausblenden Delphi-Quelltext
1:
Test := JvSimpleXML1.Root.Items.Item[i].Items.ItemNamed['FriendlyName'].Value;					

ausblenden Delphi-Quelltext
1:
Access violation at address 00477C87 in module 'Project1.exe'. Read of address 00000014.					


Edit1: Ich hab das mal so versucht:
ausblenden Delphi-Quelltext
1:
Test := JvSimpleXML1.Root.Items.Item[i].Items.ItemNamed['From'].Items.ItemNamed['User'].Properties.ItemNamed['FriendlyName'].Value;					


bei ein Paar XML Datei von MSN Verlauf funktioniert das, nur net bei alle.

Edit2: Ich denke, ich weiss wieso es nicht geht, wenn z.B. bei manchen einträge unter User mehrere Kontakte drin stehen, dann kommt Zugriffsverletzung.

Wie könnte man das Problem beheben?

MfG
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 11.12.10 03:41 
Anstatt da solche Monsterzeilen zusammenzubauen geh einfach Schritt für Schritt vor und prüfe immer, ob und wie viele Unterknoten denn existieren.

Das ist dann natürlich auch gleich ein wenig schneller.