Zitat von
grenzgaenger:
keine Ahnung wie Alzaimar das geschafft hat...
Ich habe eine Stringindizierung weniger als Du. Also ich nicht, sondern der Code.
Versuch doch mal:
Delphi-Quellcode:
procedure ReplaceDChar(Var Quelle: string; aChar: char);
var
i, j: integer;
c : Char;
label
1;
begin
// Erstmal zum ersten Auftreten von aChar hüpfen.
For j := 1 to Length (Quelle) Do
if Quelle[j]=aChar then
goto 1; // Nicht hauen, soll ja schnell sein
Exit;
// --------
1:c := quelle[j];
for i := j+1 to length(quelle) do
if (quelle[i]<>c) or (aChar<>c) then
begin
j := j + 1;
c := quelle[i];
quelle[j] := c;
end;
setlength(quelle, j);
end;
Könnte funktionieren und könnte auch noch schneller sein.
Dann könnte man noch darauf verzichten, jedesmal ein einzelnen Zeichen zu bewegen. Erst wenn sich (j-i) ändert, kopiert man per Copy (was schneller ist, als Zeichen-für-Zeichen zu kopieren) das letzte Teilstück. Auch das könnte was bringen.