Das ist aber ein schönes Beispiel, wo man es sich mit einer Schleife und den Funktionen mod und div ersparen kann, mit den vielen Variablen zu arbeiten. Das Folgende ist nur hingetippt und wahrscheinlich nicht so ganz richtig mit den mods und divs, aber das Prinzip sollte so gehen.
Delphi-Quellcode:
var nr:String;
i:integer;
temp:integer;
summe:integer;
ergebnis:integer; //oder String
begin
nr=EditNr.Text;
if Length(nr)<>8 then
showmessage('Nicht 8 Zeichen!')
else
begin
for i:=1 to 8 do
begin
if not IsNumeric(nr[i]) then
showmessage('Eingabe enthält nicht numerische Zeichen')
else
begin
temp:=StrToInt(nr[i]) ;
temp:=temp*(2-(i mod 2));
temp:=(temp mod 10) + (temp div 10);
summe:=summe+temp;
end;
end;
ergebnis:=(summe mod 10);
//oder falls als Gesamtstring: ergebnis=nr+IntToStr(summe mod 10);
end;
end;
Noch besser wäre natürlich die Prüfziffernberechnung in eine eigene Funktion zu packen, die Prüfung, ob die Eingabe brauchbar ist in eine andere, usw.