티스토리 뷰
반응형
포스팅을 하기에 앞서
개인적으로
요즘같이 주위가 어수선한 시기에
이틀연속으로(게임소개가 아닌) VB에 대한 팁을
올리게되어 상당히 기쁜마음이 들고 있음을 알리고 싶다.
ㅎㅎㅎㅎ
각설하고....
오늘의 주제는 VB에서 할 수 있는 파일 핸들링에 관한
역시나 짧고 굵은 소소한 팁에 대한 이야기로써 파일에 쓰기작업을 할 때 가졌던 궁금증에 대한 이야기이다.
내용은 사실 어제처럼 별거 아니지만
책에도 잘 안나오고 관심도가 떨어져서 키워드로 찾아봐도 찾기도 힘든 내용이기 때문에 ㅎㅎㅎㅎ
이번기회에 한번 봐 뒀다가 나중에 써먹을 일이 (꼭) 생길거라고 생각하고 가볍게 보길 바란다.
작업을 해 본 적이 있는 사람이라면 아마도 파일 핸들링을 해 본적이 있을 것이다.
그리고, 요즘과는 달리 과거 1차 필기시험과 2차 프로그램 실기시험으로 '정보처리 기사' 자격증을 따던
그 시절에 VB로 실기시험을 본 사람들이라면 파일에 정답을 써서 제출해 본 경험이 있을 것이다.
아래는 참고로 MSDN에 나와 있는 파일핸들링 도움말을 접어 올리니 궁금하다면 확인해 보기 바란다.
기본적으로 파일을 열어서 읽고 쓰기를 하려면 사용해야 하는 구문이 바로
Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
이 구문이다.
필수 옵션만 본다면
정도가 될 것이다.
그럼 실제로 사용되어지는 코드를 살펴보도록 하자.
Dim a As String
a = "나는야 세상에서 제일 잘생긴 개발자"
Open App.Path & "\" & Format(Now, "YYYYMMDD") & ".txt" For Append As #1
Write #1, a
Close #1
a = "나는야 세상에서 제일 잘생긴 개발자"
Open App.Path & "\" & Format(Now, "YYYYMMDD") & ".txt" For Append As #1
Write #1, a
Close #1
그냥 평범한 코드이다. 보통 이렇게들 사용할 거라고 보아진다.
위 코드를 실행시키면
어플리케이션의 기본경로에 오늘날짜의 이름으로 txt파일이 생성되며, 내용은
요렇게 나온다.
자....... 혹시 눈치를 챘는지?
바로 이 대목에서 오늘 포스팅의 주제가 나왔다. 위 그림에서 뭐가 문제가 될까.
출력된 결과파일의 내용을 보면 문장 양쪽에 자동으로 더블 쿼테이션이 붙어서 나오는 걸 볼 수 있다.
이게 왜 문제일까?
만약에 어제 올렸던 포스팅과 같은 작업을 한다면 여기서 문제가 될 수 있다.
(참고링크 : [VB 6.0] VB사용자를 위한 깨알같은 팁 - 아스키 코드의 활용)
예를 들어 아래와 같은 코드로 파일에 쓰기를 한다고 가정하고 실행시켜 보자.
Dim a As String
a = "나는야 " & Chr(34) & "세상에서 제일 잘생긴" & Chr(34) & " 개발자"
Open App.Path & "\" & Format(Now, "YYYYMMDD") & ".txt" For Append As #1
Write #1, a
Close #1
Write #1, a
Close #1
결과는?
음.... 요러면 문제가 된다. 이런걸 어따 쓰냐고 생각할 수도 있겠지만,
xml문서를 파싱한다거나 html을 다룰 경우에 반드시 문제가 될 것이다.(뭐 그 외에도 문제가 될 경우는 있을거다.)
어찌보면 사소한 문제이지만, 또 이런문제가 생기면 누가 알려줄까를 생각하면 또 답답해 질 수도 있는 문제다. ㅎ
위에서 발생하는 문제의 원인은 Write 명령어 때문이다.
Wirte명령어를 바꿔주면 문제는 바로 해결이 된다. 아래 코드를 보도록 하자.
Dim a As String
a = "나는야 " & Chr(34) & "세상에서 제일 잘생긴" & Chr(34) & " 개발자"
Open App.Path & "\" & Format(Now, "YYYYMMDD") & ".txt" For Append As #1
''Write #1, a '' Write 명령어를 주석처리하고 Print명령어로 대체함.
Print #1, a
Close #1
''Write #1, a '' Write 명령어를 주석처리하고 Print명령어로 대체함.
Print #1, a
Close #1
Write를 Print로 바꾸어 보았다.
물론 예상한대로 결과가 잘 나왔다. ㅎㅎㅎ
굵고 짧게 포스팅을 하려고 했지만 또 대check없이 길어지는 탓에 오늘도 서둘러 마무리를 짓겠다.
반응형
'VB 6.0 & java(JSP, Servlet) etc' 카테고리의 다른 글
FM20.DLL파일 재배포 관련 에러 - 시스템 오류가 발생하였습니다. 지정된 모듈을 찾을 수 없습니다. - 의 해결법 (0) | 2010.11.05 |
---|---|
[VB 6.0] Color 속성의 헥사값을 RGB값으로 변환하기 (0) | 2009.12.03 |
[VB 6.0] VB사용자를 위한 깨알같은 팁 - 아스키 코드의 활용 (0) | 2009.10.21 |
[vb 6.0] 프로시져 실행 결과는 미궁속으로 - <개체가 닫혀있으면 작업이 허용되지 않습니다.> (0) | 2009.09.15 |
[VB 6.0] 배열을 사용한 빵셔틀 만들기 - 빵나눠주기 알고리즘 (2) | 2009.08.25 |
댓글
반응형
02-16 00:01
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- xml강좌
- c#
- C
- Excel
- 고전게임
- 좀비게임
- 중독성짱게임
- 8비트
- brawlstars
- 오락실게임
- 엑셀
- 추억의 게임
- XML Programming with VB 6.0
- 플래시게임
- 8비트상성
- 브롤스타즈
- 플래시 게임
- 플래쉬 게임
- 고전명작
- 틀린그림찾기
- J.S Bach
- 레트로게임
- XML
- SQL
- 오락실 게임
- 다른그림찾기
- 플래쉬게임
- MS-SQL
- 플래쉬
- 플래시
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함