Kanns grad nicht testen, aber in deiner repeat - Schleife löschst Du ein Zeichen deines Strings wenn es sich um eine Ziffer handelt und verkürzt anschließend deinen Zähler (run) trotzdem noch um 1. Somit überspringst du für den Fall, dass du bereits vorher eine Ziffer gelöscht hast, ein Zeichen in deinem string.
Delphi-Quellcode:
while endNotFound
do
begin
repeat
case s[run]
of
'
0' .. '
9': delete(s,run,1);
end;
dec(run);
until run = 0 ;
endNotFound := TRUE;
end;
Ich würde das ganze mit einer for..do - Schleife lösen
Delphi-Quellcode:
for i = length(s) downto 0 do
begin
//prüfe hier, ob das betreffende Zeichen eine Ziffer ist, wenn ja. lösche es
//damit prüfst du tatsächlich alle Zeichen deines Strings und überspringst durch das löschen keines
end
Wie gesagt, ungetestet.
Edit:
Mist, zu langsam getippt