moin,
du darfst keine For-Schleife verwenden. Bei For-Schleifen darf die Indexvariable inerhalb der Schleife nicht geändert werden und auch der Indexbereich (soll heißen: Ausgangs und Zielwert der Indexvariablen) muss unverändert bleiben.
Nimm stattdessen eine while-Schleife, deren Index du selber steuerst: immer wenn etwas gelöscht wurde bleibt der Index unverändert, da ja jetzt ein anderes Zeichen an dieser Position sitzt. Andernfalls wird solange um eins erhöht bis wir am Énde des Strings angekommen sind.
Delphi-Quellcode:
TrimString := Trim(OriginalString);
SemikolonString := StringReplace(TrimString, ' ', ';', [rfReplaceAll]);
i := 1;
while i < length(Semikolonstring)-1 do
if (SemikolonString[i] = ';') and (SemikolonString[i + 1] = ';')
then Delete(SemikolonString,i,1);
else inc(i);
result := SemikolonString;