Leute, im Ernst: Ist hier nicht ausnahmsweise angebracht (ja, ich weiß, es gibt Programmierer, die lehnen das ab), die einfachste Variante vorzuschlagen?
emmmmm nöö
Wir haben ja oft hier Neulinge die mit Delphi anfangen. Nach der einfachen Regel:
Make it Work Make it Right Make It Fast!
Ich gebe Dir recht, dass für den TE die Insert Variante ausreichend ist. Aber auch er sollte im Hinterkopf behalten, dass es zwar funktioniert, aber nicht gerade performant ist.
Daher finde ich meine Variante als gutes Beispiel. (Die
RTL macht es auch so) Für so einen Fall "C-Like" mit PChars zu arbeiten. Dabei bleibt die Routine immer noch übersichtlich. Und ist immerhin 60x schneller... Wir regen hier nicht von 2x oder 3x!
Sir Rufo's Variaten hat aber auch Ihren Platz - wenn auch nicht so schnell - kann man diese Routine, so übernehmen und als 1. Routine in seine eigene Procedurensammlung packen - weil allgemein gültig... Dabei immerhin auch 6,7x schneller als die Insert Variante. Not Bad für eine allgemeingültige Routine...
Hugo hat dann gezeigt... Richtig Kopieren bringt nochmal eine mehr als doppelt so schnelle Version hervor. Auch wenn die Routine dann nicht mehr ganz so übersichtlich ist.
Eigentlich wollte ich noch eine Thread-Variante bauen, die den String erst auf 4 Worker-Thread aufteilt, aber ich hatte leider gestern keine Zeit mehr... Vielleicht macht es ja noch einer...
Im Großen und Ganzen... Finde ich den Thread sehr gelungen, auch wenn das Thema jetzt damit abgeschlossen ist. Wenn jeder Programmierer - selbst bei so wenigen Zeilen Source - die Performance Überlegungen nicht außer acht lassen würde, brächten wir heute nicht 3,5 GHz, um Dinge zu erledigen, die früher mit 25 MHz möglich waren... (bitte nicht darauf eingehen)
Mavarik