Delphi-PRAXiS
Seite 7 von 8   « Erste     567 8      

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 22. Dez 2013 15:07

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.

creed steiger 22. Dez 2013 16:23

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

Insider2004 22. Dez 2013 16:31

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von creed steiger (Beitrag 1240780)

Geht nicht. NativeXML ist völlig inkompatibel zu TXMLDocument.

himitsu 22. Dez 2013 17:25

AW: VerySimpleXML: Problem unter iOS?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hier im Forum suchenhimXML ... 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:

Zitat von Insider2004 (Beitrag 1240771)
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.

Du hast eigentlich Recht, das könnte man.
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
  ...

Insider2004 22. Dez 2013 22:23

AW: VerySimpleXML: Problem unter iOS?
 
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
  ...

Das geht auf keinen Fall.

himitsu 22. Dez 2013 23:10

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;

Sir Rufo 23. Dez 2013 09:35

AW: VerySimpleXML: Problem unter iOS?
 
Zitat:

Zitat von cydo (Beitrag 1240570)
Naja, was gibts denn für ne *schöne* plattformübergreifende Alternative um auf das erste Zeichen im String zuzugreifen (etwa StringBuilder?) ohne Zerobased off zu verwenden?
Also

Delphi-Quellcode:
if (Length(Line) > 0) and (Line[1]='x') then
 bla
?

Wie wäre es damit?
Delphi-Quellcode:
if (Length(Line) > 0) and (Line[Low(Line)]='x') then
 bla
upps, hatten wir ja schon :)

himitsu 23. Dez 2013 11:12

AW: VerySimpleXML: Problem unter iOS?
 
Delphi-Quellcode:
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
Cool, wie schnelle es so ausssieht, daß man mehr und damit natürlich auch "besseren" Code geschrieben hatt. 8-)

cydo 24. Dez 2013 14:47

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.

Insider2004 24. Dez 2013 14:58

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Seite 7 von 8   « Erste     567 8      

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