AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Problem mit xpparser.pas Unit
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit xpparser.pas Unit

Ein Thema von toyoman · begonnen am 18. Feb 2009 · letzter Beitrag vom 18. Feb 2009
Antwort Antwort
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#1

Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 08:45
hallo jungens

ich muss ein altes projekt in delphi 2007 zum laufen bringen.
in diesem projekt wird eine xpparser.pas verwendet. so wie es ausschaut hat das Ding was mit XML am hut. da ich mich damit nicht auskenne und beim kompilieren immer folgende fehlermeldung erhalte wollte ich fragen ob sich jemand damit auskennt und ev. eine beschreibung oder ähnliches hat warum das ding unter delphi 2007 nicht mehr funzt:

Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EXpParserError mit Meldung 'Invalid XML name: ' ''. Prozess Reports.exe (4844)
Der Fehler tritt anscheinend in folgender Funktion auf:

Delphi-Quellcode:
function TXpParser.ReadNameToken(aValFirst : Boolean) : DOMString;
var
  TempChar : DOMChar; {!!.52}
  First : Boolean;
  ResultLen : Integer; {!!.52}
  CurrLen : Integer; {!!.52}
begin
  if TryRead(Xpc_ParamEntity) then begin {!!.52 - Start}
    ParseParameterEntityRef(True, False);
    SkipWhiteSpace(True);
  end; {!!.52 - End}
  First := aValFirst;
  Result := '';
  CurrLen := 0; {!!.52 - Start}
  ResultLen := 20;
  SetLength(Result, ResultLen); {!!.52 - End}
  while True do begin
    TempChar := ReadChar(False);
    if (TempChar = '%') or (TempChar = '<') or (TempChar = '>') or
       (TempChar = '&') or (TempChar = ',') or (TempChar = '|') or
       (TempChar = '*') or (TempChar = '+') or (TempChar = '?') or
       (TempChar = ')') or (TempChar = '=') or (TempChar = #39) or
       (TempChar = '"') or (TempChar = '[') or (TempChar = ' ') or
       (TempChar = #9) or (TempChar = #$0A) or (TempChar = #$0D) or
       (TempChar = ';') or (TempChar = '/') or (TempChar = '') or {!!.51}{!!.52}
       (TempChar = #1) then {!!.52}
      Break
    else
      if XpValidNameChar(First, TempChar) then begin {!!.52 - Start}
        if (CurrLen + 2 > ResultLen) then begin
          ResultLen := ResultLen * 2;
          SetLength(Result, ResultLen);
        end;
        SkipChar;
        Inc(CurrLen);
        Result[CurrLen] := TempChar;
      end else {!!.52 - End}
        raise EXpParserError.CreateError(FFilter.Line,
                                         FFilter.LinePos,
                                         FFilter.URL,
                                         sInvalidName +
                                         QuotedStr(TempChar));
    First := False;
  end;
  SetLength(Result, CurrLen); {!!.52}
end;
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 08:53
Moin,

es wäre ganz nett zu wissen wo genau der Fehler auftritt (Zeile).
So müsste man jetzt seine befragen

Gruß
Reli
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 08:59
Zitat von Relicted:
Moin,

es wäre ganz nett zu wissen wo genau der Fehler auftritt (Zeile).
So müsste man jetzt seine befragen

Gruß
Reli
also wenn ich ANHALTEN anklicke bei der Exception bleibt er auf dieser Zeile stehen (markiert):
raise EXpParserError.CreateError(FFilter.Line,

tja was sagt deine glaskugel nun?
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 09:08
Menü Ansicht -> Debug-Fenster -> Aufruf-Stack
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 09:09
Dann gibt XpValidNameChar False zurück, warum musst du einmal schauen.

Aber wenn eine Exception bereits angezeigt wird, ist es ja schon zu spät, du müsstest vorher Haltepunkte setzen. Nur dann siehst du normalerweise, wo die Exception auftritt. In diesem Fall sieht man es auch so sofort, weil sie ja direkt ausgelöst wird.

// EDIT:
Nebenbei sind bei diesem Exceptiontyp (EXpParserError) ja noch weitere Informationen enthalten, wenn du diese (wie offenbar vorgesehen) mit try..except abfängst und auswertest.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#6

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 09:11
Hi toyoman,

das "Ding" sollte einen Lizenz-Header haben, also in der Datei XpParser.pas sollte etwas über den Hersteller stehen. Es dürfte sich dabei um die alte TurboPower XMLPartner Library handeln (http://tpxmlpartner.cvs.sourceforge.....1&view=markup).

Die Projektseite dazu findest Du bei SourceForge: http://sourceforge.net/projects/tpxmlpartner

Zitat von toyoman:
also wenn ich ANHALTEN anklicke bei der Exception bleibt er auf dieser Zeile stehen (markiert):
raise EXpParserError.CreateError(FFilter.Line,
Diese Exception kommt in o.g. Datei ~ 50 mal vor - aber zum Glück hast Du ja den Code oben gepostet. Wenn ich mir ReadNameToken so ansehe, wird die Exception nur ausgelöst, wenn der Name des Tokens ungültige Zeichen enthält.

Wenn ich nun nach der Suche von XpParser.pas in Google die SourceForge-Seite öffne und auf Suchen im Forum bzw. im Tracker gehe, finde ich sehr viele Bugs und auch sowas:

http://sourceforge.net/tracker/index...08&atid=626034
oder auch
http://sourceforge.net/forum/forum.p...orum_id=346671

Das sind ja schonmal bekannte Probleme mit D2007.

Probier sonst mal den D2009 Port von Lasse:
http://www.songbeamer.com/delphi/

Dort findest Du eine Version des XMLPartner die auch auf D2009 geht - ich weiß es geht hier um D2007, aber vielleicht hat Sebastian ja einige Bugfixes eingebaut...

Andernfalls bleibt wohl nichts anderes den Code selbst zu fixen bzw. eine andere XML Komponente zu verwenden.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 09:14
Zitat von nuclearping:
Menü Ansicht -> Debug-Fenster -> Aufruf-Stack
der sieht so aus, hilft das was?

:7c812a5b kernel32.RaiseException + 0x52
XpParser.TXpParser.ReadNameToken(???)
XpParser.TXpParser.ParsePIEx
XpParser.TXpParser.ParseMisc
XpParser.TXpParser.ParseProlog
XpParser.TXpParser.ParseDocument
XpParser.TXpParser.ParsePrim
XpParser.TXpParser.ParseDataSource(???)
ReportDef.TReportScript.ReadConfig(???,'H:\Project s\Delphi\GUI\DbeReports\Reports.xml','H:\Projects\ Delphi\GUI\DbeReports\Reports\')
GUI.TListenForm.LoadReports(???)
GUI.TListenForm.Init(???)
:0049bcd6 TControl.WndProc + $2BE
:0049fcd0 TWinControl.WndProc + $500
:004824a8 TCustomForm.WndProc + $558
:0049f3f7 TWinControl.MainWndProc + $2F
:0043499a StdWndProc + $16
:7e418734 USER32.GetDC + 0x6d
:7e418816 ; C:\WINDOWS\system32\USER32.dll
:7e4189cd ; C:\WINDOWS\system32\USER32.dll
:7e4196c7 USER32.DispatchMessageA + 0xf
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 09:15
Zitat von Assertor:
Hi toyoman,

das "Ding" sollte einen Lizenz-Header haben, also in der Datei XpParser.pas sollte etwas über den Hersteller stehen. Es dürfte sich dabei um die alte TurboPower XMLPartner Library handeln (http://tpxmlpartner.cvs.sourceforge.....1&view=markup).

Die Projektseite dazu findest Du bei SourceForge: http://sourceforge.net/projects/tpxmlpartner

Zitat von toyoman:
also wenn ich ANHALTEN anklicke bei der Exception bleibt er auf dieser Zeile stehen (markiert):
raise EXpParserError.CreateError(FFilter.Line,
Diese Exception kommt in o.g. Datei ~ 50 mal vor - aber zum Glück hast Du ja den Code oben gepostet. Wenn ich mir ReadNameToken so ansehe, wird die Exception nur ausgelöst, wenn der Name des Tokens ungültige Zeichen enthält.

Wenn ich nun nach der Suche von XpParser.pas in Google die SourceForge-Seite öffne und auf Suchen im Forum bzw. im Tracker gehe, finde ich sehr viele Bugs und auch sowas:

http://sourceforge.net/tracker/index...08&atid=626034
oder auch
http://sourceforge.net/forum/forum.p...orum_id=346671

Das sind ja schonmal bekannte Probleme mit D2007.

Probier sonst mal den D2009 Port von Lasse:
http://www.songbeamer.com/delphi/

Dort findest Du eine Version des XMLPartner die auch auf D2009 geht - ich weiß es geht hier um D2007, aber vielleicht hat Sebastian ja einige Bugfixes eingebaut...

Andernfalls bleibt wohl nichts anderes den Code selbst zu fixen bzw. eine andere XML Komponente zu verwenden.

Gruß Assertor
wow ihr überhäuft mich hier mit infos... danke! ich schau mir das jetzt in ruhe an...
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 10:22
Zitat von toyoman:
Zitat von Assertor:
Hi toyoman,


Wenn ich nun nach der Suche von XpParser.pas in Google die SourceForge-Seite öffne und auf Suchen im Forum bzw. im Tracker gehe, finde ich sehr viele Bugs und auch sowas:

http://sourceforge.net/tracker/index...08&atid=626034
Gruß Assertor
wow ihr überhäuft mich hier mit infos... danke! ich schau mir das jetzt in ruhe an...
dieser link oben hat mir schon sehr geholfen. es war tatsächlich ein bug. ich musste die funktion:
TXpInCharFilter.ReadChar wie im Link beschrieben anpassen.

vielen dank für diesen super tip. jetzt hab ich zwar noch weitere probleme, aber die krieg ich hoffentlich auch noch in den griff
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#10

Re: Problem mit xpparser.pas Unit

  Alt 18. Feb 2009, 10:22
Hi,

Zitat von toyoman:
dieser link oben hat mir schon sehr geholfen. es war tatsächlich ein bug. ich musste die funktion:
TXpInCharFilter.ReadChar wie im Link beschrieben anpassen.

vielen dank für diesen super tip. jetzt hab ich zwar noch weitere probleme, aber die krieg ich hoffentlich auch noch in den griff
Freut mich, helfen zu können!

Gruß Assertor
Frederik
  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 06:52 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