[BlueLeaf1336]>
PROGRAM>
Natural Born Junk>
ISBNコードチェッカー
2002/10/30:作成
C言語による最新アルゴリズム辞典(奥村晴彦著)を参考にした。
指定した文字列がISBNコードとして正しいかどうかをチェックする。
どのような場面で使用するのか不明。
function CheckISBN(pISBN: string): Boolean;
const
ISBN_LENGTH = 10;
ISBN_MEAN_OF_TEN = 'X';
ISBN_MEAN_OF_X = 10;
MININT = Low(integer);
var
i: integer;
Check: integer;
begin
Result := False;
Check := 0;
if Length(pISBN) <> ISBN_LENGTH then Exit;
for i := 1 to ISBN_LENGTH - 1 do
begin
Check := Check + (ISBN_LENGTH - i + 1) * StrToIntDef(pISBN[i], MININT);
end;
if pISBN[ISBN_LENGTH] = ISBN_MEAN_OF_TEN then
begin
Check := Check + ISBN_MEAN_OF_X;
end else
if StrToIntDef(pISBN[ISBN_LENGTH], MININT) <> MININT then
begin
Check := Check + StrToInt(pISBN[ISBN_LENGTH]);
end else
begin
Exit;
end;
if Check < 0 then Exit;
if (Check mod 11) <> 0 then Exit;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
ISBN = 'ISBN4-415-08600-4';
var
aISBN: string;
begin
aISBN := StringReplace(ISBN, 'ISBN', '', [rfReplaceAll]);
aISBN := StringReplace(aISBN, '-', '', [rfReplaceAll]);
ShowResult(BoolToStr(CheckISBN(aISBN), True));
end;