Thema: Delphi Parse Error

Einzelnen Beitrag anzeigen

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