PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/09/24 22:45:50
Name 유닉스드라이
Subject 비주얼 베이직 질문입니다
Private Function chk주민등록번호(ByVal 주민등록번호 As Variant) As Boolean
    Dim Weight As Currency
    Dim iTotal As Currency
    Dim chkFlag As Currency
    Dim chkvalue As Currency
    Dim worth As Currency
    Dim variable As Currency
    Dim a As Currency

If Len(주민등록번호) <> 13 Then Exit Function
chkFlag = Right(주민등록번호, 1)
Weight = "234567892345"
iTotal = 0
For a = 1 To 12
worth = Mid(주민등록번호, a, 1)
variable = Mid(Weight, a, 1)
iTotal = iTotal + (worth * variable)
Next
chkvalue = 11 - (iTotal Mod 11)
If chkvalue > 9 Then
chkvalue = chkvalue Mod 10
End If
If chkvalue = 10 Then
chkvalue = 0
ElseIf chkvalue = 11 Then
chkvalue = 1
End If
chk주민등록번호 = chkvalue = chkFlag
End Function


//////////////////////////////////


Public Function chkJuminbeonho(ByVal sJuminbeonho As Variant) As Boolean
    Dim sWeight As String
    Dim iTotal As Byte
    Dim chkFlag As Byte
    Dim chkValue As Byte
    Dim dt As Byte
    Dim wt As Byte
    Dim a As Byte
    
sJuminbeonho = Replace(sJuminbeonho, "-", "")
If Len(sJuminbeonho) <> 13 Then Exit Function
chkFlag = Val(Right(sJuminbeonho, 1))
sWeight = "234567892345"
iTotal = 0
For a = 1 To 12
dt = Val(Mid(sJuminbeonho, a, 1))
wt = Val(Mid(sWeight, a, 1))
iTotal = iTotal + (dt * wt)
Next
chkValue = 11 - (iTotal Mod 11)
If chkValue > 9 Then
chkValue = chkValue Mod 10
End If
If chkValue = 10 Then
chkValue = 0
ElseIf chkValue = 11 Then
chkValue = 1
End If
chkJuminbeonho = chkValue = chkFlag
End Function

주민등록번호 판별기 만드는데 다른 부분은 대충 이해 가는데

이 연산부분이 어려워서요

아래 것이 원본이고 위에것이 제가 원본을 그냥 맘대로 한건데

만지면서 보다가 뺄껀 빼봐야겠다 해서 막 빼면서 실행해서 되나 확인하고

이런식으로 했는데 이해 안가는 몇가지가
dt = Val(Mid(sJuminbeonho, a, 1))
wt = Val(Mid(sWeight, a, 1))

요 2문장에서 val은 숫자로 정의를 한다고 하는데 프로그램 자체가 주민등록번호 판별기니까 숫자일 수 밖에 없으니

val은 필요가 없는거 아닌가요?

그리고
Dim chkFlag As Byte
Dim chkvalue As Byte

이 2개의 선언은 이해는 가는데 chk가 왜 필요한지를 모르겠네요

검색해도 만족할만한 답도 안나오고요

전체적으로 주석으로 설명해주시면 감사하겠네요

아무것도 모르고 언어 할려니 좀 힘드네요

알아가는 재미도 있고 해서 책보면서 조금씩 하는데

그래도 처음이라 잘 모르겠네요


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/09/24 23:11
수정 아이콘
VB는 C나 JAVA등과 달리 엄격하게 타입을 지키지 않는 언어지요. mid를 사용했으니 Mid(sJuminbeonho, a, 1)의 리턴값은 문자형일 겁니다.
사실 val을 안했어도 VB는 알아서 연산이 가능하지만, 보다 명시적으로 표현해 줬다고 봐야될 것 같네요.

chkFlag나 chkvalue는 주민등록번호의 오류를 체크하기 위해 만들어 놓은 flag네요.
유닉스드라이
11/09/25 05:20
수정 아이콘
답변감사합니다
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
115241 메탈시계 가죽밴드로 교체하려고 하는데 어렵네요 [3] worcs1834 11/09/25 1834
115239 농협체크카드 이용시간..? [4] 참소주3630 11/09/25 3630
115238 스타 리플 봐주실 분 계신가요... ( 낮에 스타잘하는 분과 붙는다고 글올린 사람입니다) [8] 싸구려신사2189 11/09/25 2189
115237 다람쥐 먹이주기 질문입니다. [2] 미술토스1725 11/09/25 1725
115236 아이튠즈 복구 질문입니다. [3] 이뿌니사과1655 11/09/24 1655
115235 espn을 hd로 보려면.. [3] Sue1583 11/09/24 1583
115234 비주얼 베이직 질문입니다 [2] 유닉스드라이1853 11/09/24 1853
115233 김치를 냉장고에 오래 넣어놨는데 괜찮을까요,,?? [6] 너만을사랑해2148 11/09/24 2148
115232 아프리카 별풍 사용해 본 적 있으세요? [16] 맥주귀신2684 11/09/24 2684
115230 스타 1 질문! [2] 금시조131267M1745 11/09/24 1745
115229 스타를 아예 해보지 않은 20대 남성이 사설서버 래더 1200vs 스타2 마스터리그 [16] 비비안2195 11/09/24 2195
115228 부모님 스마트폰 상담부탁드려요 [8] Necrosis1553 11/09/24 1553
115227 리버풀 경기 고화질로 보는 방법이 있나요? 고마유1528 11/09/24 1528
115226 트로이목마 바이러스가 사라지지가 않습니다. [1] JazzPianist1610 11/09/24 1610
115225 스2 저그전 도와주세요!! ㅜㅜ [8] 레필리아1535 11/09/24 1535
115222 우황청심환 질문드립니다. [2] 대박납시다8107 11/09/24 8107
115221 T스토어 Spectral Souls 하시는 분 계신가요? DSlayer1514 11/09/24 1514
115220 전략인간병기 카쿠고, 시구루이 류의 내장/절단만화 추천좀 부탁드려요. [6] 헥스밤3697 11/09/24 3697
115218 시간이 빨리가는것처럼 느끼면서 사는사람이 빨리죽을까요.. [3] 아레스2098 11/09/24 2098
115217 경제용어 번역좀 부탁드려요 [1] 레몬막걸리1755 11/09/24 1755
115216 피씨방에 맥주캔 들고 가도 되나요? [5] 똥줄3885 11/09/24 3885
115215 도라이브 코스추천요 [1] Cazellnu1548 11/09/24 1548
115214 안녕하세요, 무선 키보드와 마우스 추천 바랍니다 그리고 노트북 거치대도!! [1] dp1670 11/09/24 1670
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로