'질문'에 해당되는 글 1건

  1. 2007.10.17 VB 질문하는 법 2

DC 프갤에 올리기 위해 적어 본 글.

여기 올라오는 수많은 질문들의 대부분은 C이야기겠지만 가끔가다 VB도 보이더군. 특히 전과한 학생이거나 1학년 꼬꼬마들이 VB많이 묻더라.

  C같은건 그냥 소스 파일 대충 드래그해서 C & P 해주면 되겠지만, VB는 그렇게 했다가는 죽도 밥도 안된다. 소스파일만 달랑 보고서는 프로그램의 구조를 제대로 파악하기가 어렵기 때문이다. 여기 말고도 다른데 VB 관련 질문을 올리고 싶으면 이렇게 해라.

1. VB프로젝트의 구조.
  아시다시피 VB는 RAD툴이다. 이놈이 뭐하는 놈인지는 다 알겠지? 일단 VB프로젝트를(표준 EXE 기준) 하나 만들면 기본적으로 두 개의 파일이 생성된다. vbp라는 확장자를 가진 프로젝트 파일과 frm이라는 파일을 가진 폼 파일.

2. 각 파일의 용도 및 구조.
  프로젝트는 뭐하는 놈인지 알거다. 중요한 것은 frm파일이다. C의 소스 파일 확장자명이 .c라면 VB에서는 폼 파일 소스코드의 확장자명이 .frm이라는 것.
  그런데 이놈의 구조는 C와는 조금 다르다. 폼이라는 놈이 달랑 작성자가 입력한 코드만 가지고 있는게 아니라 폼에 추가된 컨트롤이나 기타 요소들의 프로퍼티들이 다 저장되어 있어서 눈에 보이는 것보다 훨씬 많은 정보들을 담고 있다.

사용자 삽입 이미지

  첫 번째 그림을 보자. 그림을 보면 위에는 폼 파일이고 밑에는 소스 코드이다. 별거 없다. 그런데 frm파일은 저기 코드만 가지고 있는게 아니라 훨씬 많이 가지고 있다. 한번 frm파일을 찾아서 한글같은 워드프로세서로 열어보자.

사용자 삽입 이미지

  글씨가 작아서 잘 안보이겠지만 맨 밑을 보면 우리가 친 소스코드가 보이지만 그 위에 많은 코드들이 더 있다. 내용을 보면 폼에 관한 정보들이다. 저게 바로 소스코드의 원문이다.

3. 무엇이 문제인가?
  문제는 냅다 폼 아무데나 더블클릭해서 전부 복사해서 붙여 넣는다는거다. VB는 컨트롤 이벤트를 중심으로 코드가 돌아가기 때문에 폼에 관한 정보 없이 그런 코드만 보면 알아보기가 정말 어렵다. 예를 들어
Private Sub cmdStart_Click()
txtShow.Text = "Hello,World!"
End Sub
  이렇게 해놨다고 치자. 저렇게 해놓으면 cmdStart가 커맨드 버튼인지 텍스트 박스인지 알리가 없고 txtShow가 레이블인지 버튼인지 폼인지 알리가 없다. 그나마 내가 이름 txt나 cmd로 해놔서 알 수 있는거지.
  그리고 당장 폼이 어떻게 생겼는지도 모르고 몇 개의 컨트롤이 필요한지 어디다 해야 그려 넣어야 하는지도 모르기 때문에 답변하기가 상당히 곤란하다.

4. 그럼 어떻게 해야 하는가?
  폼의 스크린샷 가지고는 부족하다. 컨트롤의 이름 등을 제대로 파악하기 어려우니까.
  읽는 사람 입장에서 가장 편한 방법은 프로젝트를 압축해서 올리는 거지만 너무 성의가 없다. 최소한 컨트롤의 스펙 정도는 알려 주자. 그리고 올리더라도 frm파일을 올려주면 보기 정말 편하다. 그렇다고 frm파일 원문을 통째로 C & P하면 아예 답변 받을 생각 하지 말기 바란다.
  그리고, 프로그래밍을 할때 제발 컨트롤이름도 신경써서 해 주자. 변수이름은 신경쓰면서 컨트롤 이름은 왜 죄다 form1, command1. text1, 이런건데? txtShow,cmdStart,cmbView 이런거면 얼마나 보기 좋아.
 

이상이다. 그냥 공강시간에 시간이 좀 많이 남아서 써봤다. 제일 좋은 방법은 혼자 해결하고 이런데 질문 올리지 않는 것이지만, 혹시라도 DC아닌 다른데 질문하게 되면 이정도는 최소한으로 지켜 주자.
Posted by 머리