AW: VerySimpleXML: Problem unter iOS?
Für Beispiele wäre ich dankbar, danke
|
AW: VerySimpleXML: Problem unter iOS?
Zitat:
funtioniert immer und überall. |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
Delphi-Quellcode:
const
{$IFDEF NEXTGEN} LowBoundry=0; {$else} LowBoundry=1; {$ENDIF} |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
@mkinzler: Ich hatte mich vor ein paar Tagen zwar im Delphi-Code gewundert, aber langsam bekommt das eine "Sinn", auch wenn ich es für "Unsinn" halte, das einfach so ein jahrzehntelange Standardverhalten zu ändern, ohne es laut zu sagen.
Delphi-Quellcode:
s[Low(string)] = s[1] {von früher}
|
AW: VerySimpleXML: Problem unter iOS?
Zitat:
|
AW: VerySimpleXML: Problem unter iOS?
Delphi-Quellcode:
(der Typ) vielleicht nicht unbedingt (so lang ist
High(string)
Delphi-Quellcode:
bestimmt nicht), aber
s
Delphi-Quellcode:
ginge vermutlich.
High(s)
Zitat:
[edit] Ich hatte vorhin in das "scheinbar" Aktuellste reingeguckt (1.1), merk aber, daß es doch schon "etwas" älter ist. http://blog.spreendigital.de/2011/11...er-and-writer/ Hatte ich hier nicht grade irgendwas von 1.4 gelesen? [edit] gesehn ... werd dann mal meine Änderungen dort reinmigrieren. Ach ja, ich bedank mich dann auch mal. Wurde vor 'ner knappen Woche gefragt, ob meine XML-Klasse iOS-fähig ist und kann das jetzt zu 99% verneinen. Menno, dann hab ich im Januar ja doch noch mehr dort umzubauen. (mangels passendem Delphi hätt' ich mich da totgesucht :wall:) |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
http://docwiki.embarcadero.com/RADSt...S_from_Desktop http://blog.marcocantu.com/blog/tstr...delphixe3.html http://blog.blong.com/2012/10/new-co...elphi-xe3.html http://blogs.embarcadero.com/medingt...tstringhelper/ |
AW: VerySimpleXML: Problem unter iOS?
Ohh, hatte man hier nie was von gehört.
Gut, beim Migrieren weiß man das nun, jetzt muss man es nur noch wissen, wenn man etwas neu entwickelt. Aber ich finde es dennoch etwas "unglücklich", da es ja bei X-Plattform ja nun noch mehr "grundlegende" Unterschiede gibt. |
AW: VerySimpleXML: Problem unter iOS?
Vielen Dank an alle beteiligten für die Hilfe! Muss erst mal die Beiträge durchlesen, verstehe noch nicht ganz, wo das Problem lag.
|
AW: VerySimpleXML: Problem unter iOS?
Zitat:
Für mobile Platformen wird's nur den neuen Compiler geben (und kein Versuch mehr weiter den jetzigen Uraltcompiler weiter zu maltretieren im ihn auf ARM zu bringen). *Irgendwann* (wenn er LLVM soweit ist) wird auch der "normale" Windows Compiler durch den neuen LLVM-Compiler ersetzt. Auf den Webseiten (und im internet) findet man einiges zum Thema LLVM und Delphi. |
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.
|
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. |
AW: VerySimpleXML: Problem unter iOS?
Das hat nichts mit LLVM zu tun sondern mit der falschen Umsetzung in der RTL.
|
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.
|
AW: VerySimpleXML: Problem unter iOS?
Zitat:
|
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). |
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.
|
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! |
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:) |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
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. |
AW: VerySimpleXML: Problem unter iOS?
Performed nicht schlecht bis jetzt:
XML file: ~220 KB read write MSDOM 2.5 18.6 ADOM 10.5 35.3 OmniXMLKluug 3.3 5.0 VerySimpleXML 1.0 1.0 AlcinoeXML Error normiert, kleiner ist schneller. |
AW: VerySimpleXML: Problem unter iOS?
nativxml könnte man noch benchmarken
https://code.google.com/p/simdesign/...ib%2Fnativexml http://www.simdesign.nl/xml.html |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
|
AW: VerySimpleXML: Problem unter iOS?
Liste der Anhänge anzeigen (Anzahl: 3)
himXML ... in dem einem Unterverzeichnis liegen noch ein paar XML-Klassen anderer Entwickler.
Die "aktuellen" Version von himXML sind aber bis maximal D2006/TDE abwärskompatibel und das wird sich auch nicht ändern, da es einfach zu viel Aufwand ist, wenn man noch eine ordentliche Code-Struktur und nette RTL&Compiler-Features nutzen möchte. Eine der Älteren bis D7 (ich glaub jemand verwendete die auch in D5). Zitat:
Delphi-Quellcode:
// splitt long lines
I := 0; while I < Lines.Count do begin if Length(Lines[I]) > 10000 then begin Lines.Insert(I + 1, Copy(Lines[I], 10000 + Low(string))); Lines[I] := LeftStr(Lines[I], 10000); end; Inc(i); end; for I := 0 to Lines.Count - 1 do ... |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
|
AW: VerySimpleXML: Problem unter iOS?
Noch nicht optimiert genug? :roll:
Delphi-Quellcode:
// splitt long lines
for I := Lines.Count - 1 downto 0 do begin if Length(Lines[I]) > 1000 then begin for I2 := Length(Lines[I]) div 1000 - 1 downto 0 do Lines.Insert(I + 1, Copy(Lines[I], (I2 * 1000) + Low(string), 1000)); Delete(I); end; end; |
AW: VerySimpleXML: Problem unter iOS?
Zitat:
Delphi-Quellcode:
upps, hatten wir ja schon :)
if (Length(Line) > 0) and (Line[Low(Line)]='x') then
bla |
AW: VerySimpleXML: Problem unter iOS?
Delphi-Quellcode:
Cool, wie schnelle es so ausssieht, daß man mehr und damit natürlich auch "besseren" Code geschrieben hatt. 8-)
if Copy(MeineOrdentlichSprechendeVariable, 1, 1) = 'x' then // nääääää und würde in einem Benchmark gnadenlos ausscheiden
if LeftStr(MeineOrdentlichSprechendeVariable, 1) = 'x' then // nääääää if FirstCharIs(MeineOrdentlichSprechendeVariable, 'x') then if CharIs(MeineOrdentlichSprechendeVariable, 1, 'x') then if (MeineOrdentlichSprechendeVariable <> '') and (MeineOrdentlichSprechendeVariable[1] = 'x') then if (Length(MeineOrdentlichSprechendeVariable) > 0) and (MeineOrdentlichSprechendeVariable[1] = 'x') then if (Length(MeineOrdentlichSprechendeVariable) > 0) and (MeineOrdentlichSprechendeVariable[Low(MeineOrdentlichSprechendeVariable)] = 'x') then |
AW: VerySimpleXML: Problem unter iOS?
So. ich hab jetzt erstmal den bestehenden alten Code (noch nicht mit high/low) auf Google Code eingecheckt http://code.google.com/p/verysimplexml/, als Ziel würde ich auf eine 2.0 hinarbeiten, die Cross-Plattform für iOS/Android/MacOSX/Win32/Win64 unterstützt. Weiterhin sollte die Unit klein und überschaubar bleiben - soll jeder anpassen wie er mag. Für Erweiterungen wie Node.AsInteger/AsFloat/etc. würde ich eine zweite Unit vorschlagen, die per Helperclass einige Funktionen nachrüstet - gerade bei AsDateTime wirds spannend (sprich: lang) wie himitsu angemerkt hat. Daher würde dies einfach in eine Helperclass packen, da kann dann auch jeder einfacher was ändern.
Ihr seid wirklich herzlich gerne eingeladen, eure Änderungen am Code einzuchecken. Ich werde erst die nächsten Tage dazukommen, dann fange ich mit High/Low für die Strings an. |
AW: VerySimpleXML: Problem unter iOS?
Sehr schön. Ich würde allerdings erst Mal vorschlagen, dass man die Fehler beseitigt, bevor noch mehr Features eingebaut werden. Vielleicht auch mit Stabilisierungs- und Entwicklungs-Branch.
|
AW: VerySimpleXML: Problem unter iOS?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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