Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Parse Error (https://www.delphipraxis.net/102958-parse-error.html)

dominikkv 7. Nov 2007 14:59


Parse Error
 
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

peschai 8. Nov 2007 07:03

Re: Parse Error
 
Hallo
Also ich sehe mit dem, was du uns als Info gegeben hast, eigentlich kein Problem...

Kleine Idee: Entferne mal die Kommentare hier ... :roll:
Delphi-Quellcode:
 
// '?>':
  if (CurrentCharInfo.CodePoint = $003F) // '?'
    and Match('>') then begin  // '>'

    ResetPosition := Position - NextCharInfo.Size;

  end else
    Result := False;
oder andere Idee: ist da eventuell eine "With-Anweisung" im Spiel (Name-Match?)

peschai 8. Nov 2007 07:08

Re: Parse Error
 
Hallo

bins nochmal... :)
Zitat:

Hat auch wunderbar geklappt, nur jetzt will er irgendwie nicht mehr :-/
Wie meinst du das ? Was hast du geändert, wenns vorher funktioniert hat und jetzt nicht mehr ?

Progman 8. Nov 2007 07:08

Re: Parse Error
 
Delphi-Quellcode:
if ((CurrentCharInfo.CodePoint = $003F) and Match('>')) then begin...
wäre eindeutiger ;)

peschai 8. Nov 2007 07:12

Re: Parse Error
 
Hallo

@progman: ich glaube wir denken in dieselbe richtung ... kann es sein daß der kommentar und zeilenwechsel innerhalb der Bedingung zu problemen führt...?

Progman 8. Nov 2007 07:13

Re: Parse Error
 
ich vermute, dass da der Kommentar was durcheinanderbringt

dominikkv 8. Nov 2007 21:21

Re: Parse Error
 
diese Funktion ist in der XDom_4_1.pas

Zitat:

Zitat von peschai
Zitat:

Hat auch wunderbar geklappt, nur jetzt will er irgendwie nicht mehr :-/
Wie meinst du das ? Was hast du geändert, wenns vorher funktioniert hat und jetzt nicht mehr ?

Naja, früher gings ohne Probleme und ich hab an anderen Stellen im Programm weitergemacht, und plötzlich kommt immer die Fehlermeldung (auch an anderen Stellen im Programm wo ich XML parse).
Änderungen hab ich im Projekt hunderte gemacht, allerdings nichts was mit XML zu tun hat (und schon garnichts in der XDom_4_1).

Und das mit den Klammern hab ich ausprobiert -> nÜx.

dominikkv 8. Nov 2007 21:54

Re: Parse Error
 
ähh...lol...hab die Unit XDom_4_1 mal ganz an den anfang der Uses-Liste geschrieben, und geht!
sachen gibts -.-

danke an alle die sich bemüht haben :cheers:

peschai 9. Nov 2007 06:28

Re: Parse Error
 
Aha, also ein NameMatch!! zwar nicht verursacht durch "with" sondern durch die Reihenfolge von eingebundenen units.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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