Zitat:
while a[i]<>'' do
Da ein Char immer ein Zeichen ist, kann es nicht "keine Zeichen" sein.
Die Abfrage hätte also eher
while i <= Length(a) do
lauten müssen.
Oder du nimmst eine For-Schleife, bzw. die bereits erwähnte
ForEach For-In-Schleife.
Die Schleife
Delphi-Quellcode:
i:=1;
while i <= Length(a) do
begin
i:=i+1;
end;
ohne weitere Abbruchbedingenen entspricht natürlich genau einer For-Schleife.
Delphi-Quellcode:
for i := 1 to Length(a) do
begin
end;
Tipps:
Delphi-Quellcode:
if ((a[i]='0') or (a[i]='1') or (a[i]='2') or (a[i]='3') or (a[i]='4') or (a[i]='5') or (a[i]='6') or (a[i]='7') or (a[i]='8') or (a[i]='9')) then x:=x+1;
// verkürzt
if a[i] in ['0'..'9'] then Inc(x);
Und bezüglich des Themas Codevormatierung, speziell die Code-Einrückung, würde ich dir anraten dort dringend eine Verbesserung einzuführen.