[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 |