Prüfziffern werden häufig aus einer
gewichteten Summe errechnet.
Es bietet sich an, dies durch eine Funktion errechnen zu lassen:
Delphi-Quellcode:
{**************************************************************************
* NAME: PZ_SummenBildung
* DESC:
* Berechnung einer gewichteten Summe
* es gibt je einem Gewichtungsfaktor für gerade und ungerade Ziffern
* RESULT: die gewichtete Summe
*************************************************************************}
function PZ_SummenBildung(const s:string; ungerade,gerade:integer):Integer;
var
sum_a, sum_b : integer;
IsOdd : boolean;
n : integer;
ziffer : integer;
begin
sum_a := 0;
sum_b := 0;
IsOdd := Odd(Length(s));
for n:=1 to Length(s) do
begin
ziffer := Ord(s[n])-Ord('0');
if IsOdd then
sum_a := sum_a + ziffer
else
sum_b := sum_b + ziffer;
IsOdd := not IsOdd;
end;
result := sum_a * ungerade + sum_b * gerade;
end;