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] worcs1858 11/09/25 1858
115239 농협체크카드 이용시간..? [4] 참소주3651 11/09/25 3651
115238 스타 리플 봐주실 분 계신가요... ( 낮에 스타잘하는 분과 붙는다고 글올린 사람입니다) [8] 싸구려신사2210 11/09/25 2210
115237 다람쥐 먹이주기 질문입니다. [2] 미술토스1746 11/09/25 1746
115236 아이튠즈 복구 질문입니다. [3] 이뿌니사과1677 11/09/24 1677
115235 espn을 hd로 보려면.. [3] Sue1608 11/09/24 1608
115234 비주얼 베이직 질문입니다 [2] 유닉스드라이1877 11/09/24 1877
115233 김치를 냉장고에 오래 넣어놨는데 괜찮을까요,,?? [6] 너만을사랑해2168 11/09/24 2168
115232 아프리카 별풍 사용해 본 적 있으세요? [16] 맥주귀신2704 11/09/24 2704
115230 스타 1 질문! [2] 금시조131267M1767 11/09/24 1767
115229 스타를 아예 해보지 않은 20대 남성이 사설서버 래더 1200vs 스타2 마스터리그 [16] 비비안2217 11/09/24 2217
115228 부모님 스마트폰 상담부탁드려요 [8] Necrosis1573 11/09/24 1573
115227 리버풀 경기 고화질로 보는 방법이 있나요? 고마유1549 11/09/24 1549
115226 트로이목마 바이러스가 사라지지가 않습니다. [1] JazzPianist1628 11/09/24 1628
115225 스2 저그전 도와주세요!! ㅜㅜ [8] 레필리아1556 11/09/24 1556
115222 우황청심환 질문드립니다. [2] 대박납시다8125 11/09/24 8125
115221 T스토어 Spectral Souls 하시는 분 계신가요? DSlayer1529 11/09/24 1529
115220 전략인간병기 카쿠고, 시구루이 류의 내장/절단만화 추천좀 부탁드려요. [6] 헥스밤3703 11/09/24 3703
115218 시간이 빨리가는것처럼 느끼면서 사는사람이 빨리죽을까요.. [3] 아레스2108 11/09/24 2108
115217 경제용어 번역좀 부탁드려요 [1] 레몬막걸리1765 11/09/24 1765
115216 피씨방에 맥주캔 들고 가도 되나요? [5] 똥줄3903 11/09/24 3903
115215 도라이브 코스추천요 [1] Cazellnu1556 11/09/24 1556
115214 안녕하세요, 무선 키보드와 마우스 추천 바랍니다 그리고 노트북 거치대도!! [1] dp1680 11/09/24 1680
목록 이전 다음
댓글

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