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
Antwort Antwort
dominikkv

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

Parse Error

  Alt 7. Nov 2007, 15: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
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Parse Error

  Alt 8. Nov 2007, 08:03
Hallo
Also ich sehe mit dem, was du uns als Info gegeben hast, eigentlich kein Problem...

Kleine Idee: Entferne mal die Kommentare hier ...
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?)
Peter Schaible
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Parse Error

  Alt 8. Nov 2007, 08:08
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 ?
Peter Schaible
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: Parse Error

  Alt 8. Nov 2007, 08:08
if ((CurrentCharInfo.CodePoint = $003F) and Match('>')) then begin... wäre eindeutiger
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Parse Error

  Alt 8. Nov 2007, 08:12
Hallo

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

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Parse Error

  Alt 8. Nov 2007, 08:13
ich vermute, dass da der Kommentar was durcheinanderbringt
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
dominikkv

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

Re: Parse Error

  Alt 8. Nov 2007, 22:21
diese Funktion ist in der XDom_4_1.pas

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.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
dominikkv

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

Re: Parse Error

  Alt 8. Nov 2007, 22:54
ä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
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Parse Error

  Alt 9. Nov 2007, 07:28
Aha, also ein NameMatch!! zwar nicht verursacht durch "with" sondern durch die Reihenfolge von eingebundenen units.
Peter Schaible
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:29 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