Schnelles URLEncode mit WinAPI

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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! :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
WernerZ
Beiträge: 21
Registriert: 28.09.2004 17:47
Wohnort: Wien
Kontaktdaten:

Beitrag 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.
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

Beitrag 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
PB 5.10 Windows 7 x64
WernerZ
Beiträge: 21
Registriert: 28.09.2004 17:47
Wohnort: Wien
Kontaktdaten:

Beitrag 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.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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. :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten