AGB  ·  Datenschutz  ·  Impressum  







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

Parse Error

Ein Thema von dominikkv · begonnen am 7. Nov 2007 · letzter Beitrag vom 9. Nov 2007
 
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Parse Error

  Alt 7. Nov 2007, 14:59
Hi

ich hab hier nen Fehler den ich einfach nicht verstehe -.-
Ich versuche eine XML-Datei zu parsen, mit Xdom_4_1.
Das mache ich so:
Delphi-Quellcode:
var
  MeineXML: String;
  FInputSource: TXMLInputSource;
  FDoc: TDomDocument;
  XmlToDomParser1: TXmlToDomParser;
  DomImplementation1: TDomImplementation;
begin
{...}
  XmlToDomParser1 := TXmlToDomParser.Create(NIL);
  DomImplementation1 :=TDomImplementation.Create(NIL);
  XmlToDomParser1.DOMImpl := DomImplementation1;

  FInputSource := TXMLInputSource.Create(MeineXML, '', '', 1024, False, 0, 0, 0, 0, 1);
  FDoc := XmlToDomParser1.Parse(FInputSource); // Fehler!
  FInputSource.Free;
{...}
end;
Hat auch wunderbar geklappt, nur jetzt will er irgendwie nicht mehr :-/
In der gekennzeichneten Zeile kommt ein Fehler (Parse Error).
Ich habe den Fehler zurückverfolgt und gesehen das dieser Code-Abschnitt dafür verantwortlich ist:
Delphi-Quellcode:
      // '?>':
  if (CurrentCharInfo.CodePoint = $003F) // '?'
    and Match('>') then begin // '>'

    ResetPosition := Position - NextCharInfo.Size;

  end else
    Result := False;
Hier springt er auf den else-Teil und gibt somit false zurück auf Grund dessen dann die Fehlermeldung geworfen wird.
Das komische daran ist... beide Ausdrücke in der Bedingung liefern True zurück!
Ich habe nen Breakpoint auf die If-Anweisung gelegt und dann die beiden Ausdrücke ausgewertet.
In CurrentCharInfo.CodePoint steht 63 drinn, $003F ist auch 63 -> True
Match ist eine Funktion, welche auch True liefert (ich bin mit dem Debugger durchgegangen).

Wenn ich den Code so umschreibe:
Delphi-Quellcode:
       // '?>':
  if (CurrentCharInfo.CodePoint = $003F) then // '?'
    if Match('>') then begin // '>'

    ResetPosition := Position - NextCharInfo.Size;

  end else
    Result := False;
springt er auch ganz normal wie erwartet zum begin...end, allerdings wird dannach irgendwann eine AV angezeigt!

Die XML-Dateien, welche ich parse, haben einen gültigen Kopf:
Zitat:
<?xml version="1.0" encoding="UTF-8"?>
und nach '?>' wird ja gesucht.

Wie gesagt, früher gings, jetzt aus irgendeinem Grund nichtmehr...
An was kann das liegen?

mfg.Dominik
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
 


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 16:36 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