Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Personalausweisnummer generieren

  Alt 23. Jul 2007, 11:12
Hallo Gehstock,

wenn du deinen Code fertig hast, dann kannst du mal vergleichen. Mehr als ein Dutzend Zeilen sind nicht nötig.

EDIT: drei Fehler habe ich in meinem Code entdeckt.

(1) Die Gewichte müssen in absteigender Folge angewandt werden.
(2) Jeder Abschnitt muss wieder mit dem höchsten Gewicht starten.
(3) Die Prüfziffern der Abschnitte tragen das Gewicht 1.

Delphi-Quellcode:
function ValidIdCardNumber(const s: string): Boolean;
var
  i, iPos, iSum, iWeight: Integer;
begin
  Result := Length(s) = 36;
  if not Result then Exit;
  iSum := 0;
  iPos := 2;
  for i := 1 to 35 do
    if s[i] in ['0'..'9'] then
    begin
      if i in [10, 20, 28]
        then iWeight := 1
        else iWeight := Pred(2 shl iPos);
      Inc(iSum, (Ord(s[i]) - Ord('0')) * iWeight);
      iPos := Pred(iPos + 3) mod 3;
    end else iPos := 2;
  Result := iSum mod 10 = Ord(s[36]) - Ord('0');
end;
Grüße vom marabu
  Mit Zitat antworten Zitat