Seite 2 von 2
Verfasst: 24.10.2007 17:27
von AND51
WernerZ hat geschrieben:Du gehst die Zeichenliste durch und ersetzt alle Vorkommen im String - das ist vielleicht bei ganz kleinen Strings etwas langsamer, aber bei großen ganz wesentlich flotter.
Gute Sache...

...nochmals danke, das hat mir sehr geholfen!
Kein Problem!

Verfasst: 24.10.2007 17:34
von WernerZ
jpd hat geschrieben:Hi WernerZ,
so wie ich sehe hast du schon eine lösung für dein problem,
ich habe trotzdem das mit api umgesetzt.
hier ein beispiel von VB portiert!
Ciao
jpd
Super, danke - das ist natürlich schon sehr interessant, die API-Umsetzung der Geschichte zu sehen. Ich werd's auf jeden Fall ausprobieren, weil es bei mir durch die Größe der gePOSTeten Strings schon auf jede Optimierung ankommt - auf jeden Fall sehe ich jetzt meinen Pointer-Denkfehler.
Am langsamen uralt-Kundenrechner wurden aus ehemals 20 Minuten mit dem obigen PB-Programm heiße 15 Sekunden, das ist schon gravierend und lässt sich mit der API wohl noch ein bisschen steigern, nehme ich an.
WernerZ
PS: Ein Problem sehe ich gerade bei der API-Funktion: wie es scheint, ist die max. Länge der übergebenen Strings möglicherweise sehr begrenzt. Ob sie doch mit meinen 250kB-Strings klarkommt, bleibt auszutesten.
Verfasst: 25.10.2007 09:33
von jpd
Hi WernerZ,
so wie ich sehe ist die limitierung auf
#INTERNET_MAX_URL_LENGTH = 2084
gesetzt,
also wird diese routine für dein vorhaben nicht weiterhelfen
vielleicht währe es möglich das der string in blöcke dieser rutine übergeben wird und dann wieder zusammengefühgt....
ob es dann schnell genug ist...
Ciao
jpd
Verfasst: 25.10.2007 21:16
von WernerZ
Stimmt, die Grenze ist ziemlich niedrig angesetzt.
Allerdings ist die Routine von AND51 gerade bei langen Strings ausgesprochen schnell und für meine Zwecke gut geeignet, da ist die API gar nicht notwendig.
Interessant war's für mich trotzdem, um die Parameterübergabe zu sehen. Das könnte in anderen Fällen sehr nützlich sein.
Verfasst: 25.10.2007 21:32
von AND51
> Allerdings ist die Routine von AND51 gerade bei langen Strings ausgesprochen schnell
Sie ginge noch schneller. Haben
SuchString$ und
ErsatzString$ die gleiche Länge, dann kann man zusätzlich den Parameter am Ende auf 2 stellen, wodurch die In-Place Ersetzung vorgenommen wird. So nennt die Hilfe sie.
Der Trick: Haben die beiden genannten Strings die gleiche Länge kann man sie im Speicher bequem überschreiben anstatt
SuchString$ auszuschneiden und
ErsatzString$ einzufügen.
Das ist hier leider nicht möglich, denn wenn ich das Zeichen
é durch
%E9 ersetze, sieht man schon, dass beide Strings nicht die gleiche Länge haben.
Aber das nur als Tipp, damit du diese Prozedur noch weiter tunen kannst und das auch bei zukünftigen Einsätzen von
ReplaceString() weißt.
