ISBN validieren
Über die ISBN lassen sich nichtperiodische Veröffentlichung eines Verlags (z.B. Bücher) identifizieren. Zum 1.1.2007 wird die bisherige, seit 1972 gültige, zehnstellige ISBN durch eine 13-stellige Kennung abgelöst.
Mit dieser Funktion lässt sich die neue ISBN-13 validieren:
uses SysUtils;
function ISBN(const s: string; streng: Boolean): Boolean;
var
i, x, n: Integer;
tmp: string;
begin
Result := True;
if (not streng) or ((Copy(s, 1, 5) = 'ISBN ') and (Length(s) = 22)
and (s[9] = '-') and (s[21] = '-')) then
begin
for i := 1 to Length(s) do
if s[i] in ['0'..'9'] then
tmp := tmp + s[i]
else
if streng then
if (s[i] = '-') then
Inc(n)
else
if (i > 5) then
Result := False;
if (Result) and ((not streng) or (n = 4)) then
begin
if Length(tmp) = 13 then
begin
for i := 1 to 12 do
if i div 2 = i/2 then
x := x + StrToInt(tmp[i]) * 3
else
x := x + StrToInt(tmp[i]);
if StrToInt(tmp[13]) <> ((10 - (x mod 10)) mod 10) then
Result := False;
end
else
Result := False;
end
else
Result := False;
end
else
Result := False;
end;
Über den Parameter "streng" lässt sich kontrollieren, ob einfach nur die Prüfziffer, oder auch der korrekte Aufbau nach dem Muster "ISBN xxx-x-xxx-xxxxx-x" überprüft werden soll.
ISBN('ISBN 978-3-7657-2780-1', True)
ISBN('9783765727801', True)
ISBN('ISBN 978-3-7657-2780-1', False)
ISBN('9783765727801', False)
Über dieses Formular können Sie eine ISBN-13 online validieren: