Delphi-PRAXiS
Seite 2 von 8     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   VerySimpleXML: Problem unter iOS? (https://www.delphipraxis.net/178157-verysimplexml-problem-unter-ios.html)

himitsu 20. Dez 2013 12:14

AW: VerySimpleXML: Problem unter iOS?
 
Wie sieht es denn hier aus?
Delphi-Quellcode:
XMLObj.Ident := '';
Memo1.Lines.Text := XMLObj.Text;

cydo 20. Dez 2013 12:15

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von himitsu (Beitrag 1240522)
Ein/zwei "Problemchen" hab ich jetzt beim Überfliegen des Codes schonmal entdeckt.

Super, welche denn?

Union 20. Dez 2013 12:22

AW: VerySimpleXML: Problem unter iOS?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei ein Demoprojekt inklusive der beanstandeten XML-Datei. Suchpfad (.\source) und Bereitstellung (StartUp\Documents) für die XML-Datei sind ggf noch anzupasssen.

himitsu 20. Dez 2013 12:25

AW: VerySimpleXML: Problem unter iOS?
 
Ich prüfe es dann nach der Arbeit nochmal und lad es hier zum Testen hoch.
Wie gesagt, diese Dinge haben aber erstmal mir dem hier genannten Problem nichts zu tun.
- bissl Unicode-Zeugs, potentielle Speicherlecks (die aber en nicht oft auftreten sollten), ...
- das mit dem Zeilenumbruch
Delphi-Quellcode:
function TXmlVerySimple.GetText: String;
begin
  Lines.Clear;
  Lines.LineBreak := IfThen(Ident = '', '', sLineBreak);
(daß sich die klasse bei so einigen Dingen nicht an die XML-Deklaration halten, ignorier ich hier einfach mal ... dafür isses halt klein und "einfach")



Ich hoffe mal das hier gibt den ersten Node zurück:
Delphi-Quellcode:
Memo1.Lines.Text := '"' + XMLObj.Root.ChildNodes[0].Text + '"';
Was zeigt da denn das Memo an?
> Also ob der Fehler schon beim Einlesen oder erst beim Speichern auftritt.

romber 20. Dez 2013 12:31

AW: VerySimpleXML: Problem unter iOS?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für eure Antworten!

Zitat:

Zitat von himitsu (Beitrag 1240522)
Ich glaub fast der TStreamReader hat da einen Bug, denn der Dennis er selber behandelt die Zeilenumbrüche nicht selber.

Ich habe mir tetweise eine zusätzliche Funktion LoadFromXML gebaut ohne TStreamReader, die unter Windows ebenfalls pergekt funktioniert. Unter iOS ist das Ergebnis der selbe.

Ein Testprojekt lade ich gleich hoch, wobei dieser sich nicht viel von Unions Testcode unterscheiden wird. Ich spare mir nur den Zugriff auf die Dateisystem, indem ich mir eine fertige XML-Datei vom Webserver lade. Ansonsten alles gleich.

Zitat:

Zitat von cydo (Beitrag 1240528)
Wenn Du mir ein komplettes Testprojekt (incl. Testdateien) für iOS (unter welcher Version testest Du es?) schickst, dann kann ich ja mal nach dem Fehler suchen. Eventuell ists auch wirklich der TStreamReader, möglicherweise lässt sich da was umstellen - ich debugge es gerne

Mache ich gleich. Danke!

himitsu 20. Dez 2013 12:32

AW: VerySimpleXML: Problem unter iOS?
 
Wenn das die XML ist, dann sollte es nicht am StreamReader liegen, oder zeigt bei jemandem der Debugger in der Variable "Line" ein zeichen "A" und "<" an?
(sollte nicht, da Keines da ist)

- wenn das "Zeichen" in XMLNode.Text drin ist, dann ist es eher eine Art "Buffer-Overrun" in der Parse-Funktion des TVerySimpleXML
- oder es ist ein "Bug" beim Zusammenbauen der XML-Ausgabe im TVerySimpleXML (wäre ungewöhnlich, wenn der erst im StreamWriter auftritt)

Union 20. Dez 2013 12:45

AW: VerySimpleXML: Problem unter iOS?
 
Das Problem liegt wohl in der Verarbeitung der letzten Verschachtelungsebene:
Delphi-Quellcode:
IsSelfClosing := (Length(Node.Text) = 0) and (Node.ChildNodes.Count = 0)
Das ergibt immer true, da auf Node.Text abgefragt wird - der ist ja bei einem schließenden Tag in dem Fall immer leer. Es sollte zusätzlich Node.Parent.Text überprüft werden um das Flag zu setzen.

cydo 20. Dez 2013 12:52

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von Union (Beitrag 1240539)
Das Problem liegt wohl in der Verarbeitung der letzten Verschachtelungsebene:
Delphi-Quellcode:
IsSelfClosing := (Length(Node.Text) = 0) and (Node.ChildNodes.Count = 0)
Das ergibt immer true, da auf Node.Text abgefragt wird - der ist ja bei einem schließenden Tag in dem Fall immer leer. Es sollte zusätzlich Node.Parent.Text überprüft werden um das Flag zu setzen.

Nee, Isselfclosing fragt sowas ab:

<nixdrin/>
oder <nixdrin></nixdrin>

das ist unabhängig vom Parent Text

cydo 20. Dez 2013 12:53

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von romber (Beitrag 1240535)
Ich habe mir tetweise eine zusätzliche Funktion LoadFromXML gebaut ohne TStreamReader, die unter Windows ebenfalls pergekt funktioniert. Unter iOS ist das Ergebnis der selbe.

ja die version 1.0 von xmlverysimple ist auch ohne tstreamreader

cydo 20. Dez 2013 12:54

AW: VerySimpleXML: Problem unter iOS?
 
Unter welcher Delphi Version tritt denn das Problem auf?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
Seite 2 von 8     12 34     Letzte »    

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