Delphi-PRAXiS
Seite 6 von 8   « Erste     456 78      

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)

Insider2004 21. Dez 2013 01:22

AW: VerySimpleXML: Problem unter iOS?
 
Da gibts noch einen Fehler in VerySimpleXML: Wenn das XML-File keine CRLF enthält (Ident=0, LineBreak=''), kommt man beim Lesen in eine Endlosschleife.

himitsu 21. Dez 2013 02:06

AW: VerySimpleXML: Problem unter iOS?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Knallt Die auch?
Im Windows macht sie es im Testprogramm zumindestens nicht. (nach Compact, wird die, im Save, ohne Zeilenumbrüche eingelesen)
Wenn ich dann wieder aufgewacht bin, kann ich gern was dazu sagen.


LLVM: Dann freu ich mich schon darauf, wenn bald auch noch die VCL-Apps knallen.

Union 21. Dez 2013 10:02

AW: VerySimpleXML: Problem unter iOS?
 
Das hat nichts mit LLVM zu tun sondern mit der falschen Umsetzung in der RTL.

Insider2004 21. Dez 2013 10:39

AW: VerySimpleXML: Problem unter iOS?
 
LLVM ist der größte Misst, weil es 0,0 in die Emba-Toolchain passt und total verbuggt ist. Aber wir sollten hier den schönen VerySimpleXML-Thread nicht mit LLVM verseuchen.

Insider2004 21. Dez 2013 11:42

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von himitsu (Beitrag 1240646)
Knallt Die auch?
Im Windows macht sie es im Testprogramm zumindestens nicht. (nach Compact, wird die, im Save, ohne Zeilenumbrüche eingelesen)

Kann ich nicht testen. Läuft nicht mit Delphi 7. Du kannst aber mal ein 1 MB xml File erstellen ohne CRLF. Alles in einer Zeile. Ich wette, das Ding frisst sich beim Laden.

cydo 21. Dez 2013 12:12

AW: VerySimpleXML: Problem unter iOS?
 
@romber:
Das Problem liegt in der Suche des ersten Zeichens eines Strings: beim "normalen" Windows-Delphi Compiler geht das so mit S[1] während die Standardeinstellungen beim neuen Compiler (iOS/Android) man bei 0 anfangen muss: S[0].
Du kannst vorrübergehend einfach in der XML-Unit oben ein {$ZEROBASEDSTRINGS OFF} einfügen, dann gehts auch. Ich werde aber die Unit umschreiben dass diese nun S[Low(String)] (Danke für diese Lösung, ist sicher schneller als copy) verwendet, dann gehts auch mit allen anderen Delphi-Compilern (D2009 und aufwärts, da Generics verwendet werden).

Einzeilige XMLs sollten kein Problem sein. macht er ja auch selber in der Demo. Ich habe aber noch einige Fixes, die noch nicht in eine offizielle Version eingegangen sind, ich werde die nächsten Tage diese einpflegen und eine 1.5 daraus machen (ich gebe hier Bescheid, wenns fertig ist).

Insider2004 21. Dez 2013 15:44

AW: VerySimpleXML: Problem unter iOS?
 
Problem analysiert: Die Engstelle ist GetText. Bei jedem Tag wird der gesamte XML-File-Inhalt durch die Funktion geschleust. In meinem Beispiel hat das XML-File 2.5MB und 30000 Tags, keine CRFL. Nicht sooo groß, würde ich sagen. Das sind dann 30000 Tags * 2.5MB = 75000 MB = 75GB !!!, die umgeschaufelt werden. Bei mir läuft das jetzt seit über 20 Minuten.

romber 21. Dez 2013 15:50

AW: VerySimpleXML: Problem unter iOS?
 
@cydo
Vielen Dank für die umfassende Hilfe an Sie und alle anderen.

Ich habe die Unit für den eigenen Bedarf auch ein wenig angepasst, indem ich die Text-Eingeschaft der Node und die Attribute-Value als Variant deklariert habe. So vermeide ich unnötige umwandlungen von String in Integer oder Boolean. Nur als Verbesserungsvorschag für die nächte Version.

Vielen Dank!

himitsu 22. Dez 2013 13:48

AW: VerySimpleXML: Problem unter iOS?
 
Das GetText ist eines der Engstellen (wenn auch die Größte) ... dieses hatte ich etwas abgeändert, so daß erst gesucht und dann der Text als ein Stück rauskopiert und gelöscht wird.
Das macht dann ein Insert+Delete pro Tag (jeweils von < bis >) und dann nochmal pro Part (die Einzelteile im Tag) und nicht mehr überall pro einzelnes Zeichen.
> siehe ExtractText ... umbenannt, da es den Text ausschneidet und nicht "nur" ausliest.

@Romber:
Eigentlich wäre es einfacher dort AsBool-, AsInt-, AsFloat-, AsDate-Property einzubauen, denn spätestens beim Float und TDateTime wird es "schlimm",
denn da nimmt der Variant die Systemeinstellungen.
- Beim Float das Dezimaltrennzeichen der aktuellen Sprache, aber eine XML ist Englisch und "muss" immer nur in einer Sprache sein, denn sonst schreibst du den Float in einer Sprache (z.B. Deutsch mit Komma als "Komma") und beim Auslesen in einer anderen Sprache (z.B. Englisch mit Punks als "Komma") da hast du dann deinen "Spaß".
- Und beim Datetime genauso, dort wird das Systemformat vom DateTimeToStr verwendet, was sich auch unterscheidet und eigentlich hat da XML sogar sein eigenes "Standard"-Format.
(bei meiner XML-Klasse hatte ich mir daher einen eigenen "Variant" gebastelt, aber hier soll es ja "Simple" sein :angel2:)

Insider2004 22. Dez 2013 14:57

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von himitsu (Beitrag 1240765)
Das GetText ist eines der Engstellen (wenn auch die Größte) ... dieses hatte ich etwas abgeändert, so daß erst gesucht und dann der Text als ein Stück rauskopiert und gelöscht wird.
Das macht dann ein Insert+Delete pro Tag (jeweils von < bis >) und dann nochmal pro Part (die Einzelteile im Tag) und nicht mehr überall pro einzelnes Zeichen.
> siehe ExtractText ... umbenannt, da es den Text ausschneidet und nicht "nur" ausliest.

Das ist immerhin besser, als die alte Lösung, da Insert und Delete sehr teuer sind.

Vielleicht wäre es auch einfacher, den einen Monster-string beim Laden einfach in mehrere kleine von z.b. 200er Länge zu zerhacken. Der Algo sollte das trotzdem fressen, da ja die nächste Line nachgeladen wird, wenn die alte abgearbeitet ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.
Seite 6 von 8   « Erste     456 78      

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