반응형
[델파이 팁] 주민등록번호 및 사업자등록번호 유효성 검사하는 함수
주민등록번호 및 사업자번호 유효성 체크하는 함수 입니다.
함수
// 13자리 경우 -> 주민등록번호 체크, 10자리 경우 -> 사업자등록번호 체크
function TForm1.CheckIDNo(const aIDNo: String; aNullIsError: Boolean): Boolean;
var
TempStr: String;
Index, LastDigit: Integer;
begin
Result := False;
TempStr := GetOnlyNumber(aIDNo);
// 길이가 0일 경우(입력 안한 경우)
if Length(TempStr) = 0 then
begin
// null을 에러 처리 하라면 에러, null을 에러 처리 하지 말라면 정상 리턴
Result := not aNullIsError;
Exit;
end; // if Length(TempStr) = 0 then
// 체크디지트 구하기
LastDigit := StrToInt(TempStr[Length(TempStr)]);
// 주민등록번호 검사
if Length(TempStr) = 13 then
begin
Index := StrToInt(TempStr[ 1]) * 2 +
StrToInt(TempStr[ 2]) * 3 +
StrToInt(TempStr[ 3]) * 4 +
StrToInt(TempStr[ 4]) * 5 +
StrToInt(TempStr[ 5]) * 6 +
StrToInt(TempStr[ 6]) * 7 +
StrToInt(TempStr[ 7]) * 8 +
StrToInt(TempStr[ 8]) * 9 +
StrToInt(TempStr[ 9]) * 2 +
StrToInt(TempStr[10]) * 3 +
StrToInt(TempStr[11]) * 4 +
StrToInt(TempStr[12]) * 5;
Result := (((11 - (Index mod 11)) mod 10) = LastDigit);
end
// 사업자번호 검사
else if Length(TempStr) = 10 then
begin
Index := StrToInt(TempStr[9]) * 5;
Index := (Index div 10) + (Index mod 10);
Index := Index +
StrToInt(TempStr[1]) + StrToInt(TempStr[4]) + StrToInt(TempStr[7]) +
(StrToInt(TempStr[2]) + StrToInt(TempStr[5]) + StrToInt(TempStr[8])) * 3 +
(StrToInt(TempStr[3]) + StrToInt(TempStr[6])) * 7;
Index := 10 - (Index mod 10);
Result := (Index = LastDigit);
end;
end;
// 입력문자 대해 숫자만 찾기
function TForm1.GetOnlyNumber(const AValue: String): String;
var
ii: Integer;
begin
Result := EmptyStr;
for ii := Length(AValue) downto 1 do
if (AValue[ii] in ['0'..'9']) or
((ii = 1) and (AValue[ii] = '-')) then
Insert(AValue[ii], Result, 1);
end;
구현
procedure TForm1.Button1Click(Sender: TObject);
begin
try
if CheckIDNo(Edit1.Text) then
Edit2.Text := '성공'
else
Edit2.Text := '오류';
except
end;
end;
결과
반응형
'Developers > Delphi[델파이]' 카테고리의 다른 글
[Delphi] 숫자 관련함수 (0) | 2020.08.04 |
---|---|
[Delphi Tip] 전화번호에 하이픈(-) 삽입 (1) | 2019.10.23 |
[Delphi_Tip] 금액을 한글로 표기 (0) | 2019.10.23 |