[C++Builder 코드]
bool __fastcall IsValidRegno(const AnsiString &Value)
{
    if (Value.Length() != 10) return false;

    int ChkWeight[9] = {1, 3, 7, 1, 3, 7, 1, 3, 5};
    int ChkNum = Value[10] - '0';
    int CheckSum = 0;

    for (int i = Value.Length() - 1; i--; )
        CheckSum += ((Value[i + 1] - '0') * ChkWeight[i]);
    return (ChkNum == ((10 - (CheckSum + ((Value[9] - '0') >> 1)) % 10)) % 10));
}

[Delphi 코드]
function IsValidRegno(Value: String): Boolean;
const
  ChkWeight: Array[1..9] of Integer = (
    1, 3, 7, 1, 3, 7, 1, 3, 5
  );
var
  CheckSum: Integer;
  I: Integer;
begin
  if Length(Value) = 10 then
  begin
    CheckSum := 0;
    for I := 1 downto Length(Value) do
      Inc(CheckSum, ((Ord(Value[i]) - 48) * ChkWeight[i]));
    Result := ((Ord(Value[10]) - 48) = ((10 - ((CheckSum + ((Ord(Value[9]) - 48) shr 1)) mod 10)) mod 10));
  end
  else
    Result := False;
end;

'Windows > RAD Studio' 카테고리의 다른 글

[DEL] 메세지 구분자  (0) 2008.02.11
덧셈을 이용한 제곱 구하기 (Delphi)  (0) 2008.01.05
주민등록번호 검증 (Delphi)  (0) 2008.01.02
윤년계산 (C++, Delphi)  (0) 2008.01.02
[RAD] GExpert - Debug 창 이용하기  (0) 2007.10.01

+ Recent posts