Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TSynEdit "infinite loop" Exception bei XML Highlighter


Delete - Mo 02.04.07 11:13
Titel: TSynEdit "infinite loop" Exception bei XML Highlighter
Hallo,

ich habe ein Problem: Ich benutze die TSynEdit-Komponenten u.a. in Verbindung mit dem XML Highlighter. Manchmal passiert es, dass ich die Exception "The highlighter seems to be in an infinite loop" (besonders bei großen XML Dateien) bekomme. Kann mir jemand bitte helfen, wie ich das Problem fixen kann...?

Vielen Dank.

Viele Grüße
rd3


chrisdrury - Mo 02.04.07 11:42

Beim Laden einer XML-Datei Try-except verwenden?
Oder Highlighter dynamisch zuweisen?

Delphi-Quelltext
1:
SynEdit1.Highlighter := SynXMLSyn1;                    

Also ich hatte schon einige Exceptions, die aber noch nicht! :shock:


Delete - Mo 02.04.07 11:52

Hallo,

ich erstelle alles sowieso zur Laufzeit und weise das dann auch so zu... Ich benutze mehrere Highlighter, jedoch ist das nur bei XML so. und auch erst dann, wenn ich durch die Datei browse oder etwas Neues hinzufügen möchte/editieren...

Gruß
rd3


Andidreas - Mo 02.04.07 14:08

Eventuell ne Macke im SynEdit. Hast Du denn die neueste Version von SynEdit? 2.0.5 vom 13.3.07


Delete - Mo 02.04.07 14:35

ja, hab die neueste version...

bei folgendem XML-Code zickt er rum:


XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 <?xml version="1.0" encoding="UTF-8"?>
 <APPROVAL>
   <ITEMTYPES
     GUTACHTEN='73,74,76'  <!-- An dieser Stelle gibt es den Fehler, hat irgendwie mit den Hochkommas was zu tun -->
   />
   <GUTACHTEN>
     <ATT1>APPROVAL1</ATT1>
     <ATT2>APPROVAL2</ATT2>
     <ATT3>APPROVAL3</ATT3>
     <PERIOD>DATAPPRAISAL</PERIOD>
     <VD1>Z_XNO_VALUATIONERTRAGSWERT_%ITEMTYPE%.B_%CURRENCY%_FAIRVALUEMAN_%ITEMTYPE%</VD1>
     <VD2>Z_XNO_VALUATIONERTRAGSWERT_%ITEMTYPE%.B_%CURRENCY%_FAIRVALUE_%ITEMTYPE%</VD2>
     <THIRDEYE>10000000000</THIRDEYE>
   </GUTACHTEN>
 </APPROVAL>


Vielleicht hat ja doch einer ne Idee.
Danke im Voraus.

Gruß
rd3


Andidreas - Mo 02.04.07 14:39

Wäre schön, wenn Du den Source als zip-Datei mal zur verfügung stellen könntet, dann kann man das besser nachvollziehen.


Delete - Mo 02.04.07 15:22

Der Fehler liegt meiner Meinung nach in der SynEdit.pas

Die haben dort auch folgendes Kommentar:
"// Cooperate with some buggy highlighters..." (Zeile 3294)

Hat nicht irgendjemand noch ne Idee?


UGrohne - Mo 02.04.07 15:29

Du schreibst im Kommentar, dass es an den Hochkommata liegen könnte. Im XML-Standard sind AFAIK doppelte Hochkommata für Strings definiert, beispielsweise bei Attributen. Gibt es dabei auch den Fehler?


Delete - Mo 02.04.07 15:35

Hab es mal mit doppelten Anführungszeichen probiert und der fehler bleibt... noch ne idee irgendeiner?

vielen dank und beste grüße,

rd3.

PS, das ganze ist leicht zu reproduzieren: einfeach ein TSynEdit und den XML-Highlighter auf ne Form und folgenden XML-Code einfügen:


XML-Daten
1:
2:
3:
4:
5:
 <?xml version="1.0" encoding="UTF-8"?>
 <APPROVAL>
   <ITEMTYPES
     GUTACHTEN='73,74,76'
   />


dann kommt der Fehler...

//EDIT: das ganze passiert u.a. auch bei dem HTML-Highlighter... Dachte, ich könnte es mit dem umgehen, aber pustekuchen... :(


Andidreas - Mo 02.04.07 17:29

Hier nachlesen [http://sourceforge.net/tracker/index.php?func=detail&aid=1692990&group_id=3221&atid=847910url]


Delete - Mo 02.04.07 22:46

die xml-datei ist korrekt... synedit kommt evtl nicht mit den umbrüchen oder hochkommas klar, oder was weiß ich... das posting bei sourceforge ist von mir... die hams gelöscht... super...


Andidreas - Mo 02.04.07 22:51

Das ist ein Schweineverein. Sollten lieber das Problem lösen.


Delete - Mo 02.04.07 22:56

evtl wechsel ich zu UCE von mike lischke... da funzt es...

vielen dank für eure antworten...

evtl. kappe ich die exceptions... dann soll der user selber merken, was er falsch macht...


Andidreas - Mo 02.04.07 23:03

Oder nimm ne ältere Version. In ConText vom Dezember 2006 gibt es überhaupt keine Probleme mit dem einlesen und korrekten Syntexhighlighting.


Delete - Mo 02.04.07 23:06

danke für den tipp! aber heute mach ich nix mehr! ;) schnauze voll!

//EDIT: hab gerade n altes programm mit der version 1.x probiert... da funzt auch alles noch...


Andidreas - Fr 06.04.07 11:42

Hab mal den für diese Meldung zuständigen Bereich aus der SynEdit.pas entfernt. Nun klappt es wieder einwandfrei.