visual basic 6.0 byte크기로 구조체에 파일을 읽고 싶습니다.
글쓴이: malja444 / 작성시간: 금, 2015/05/15 - 2:20오후
안녕하세요..구조체에 텍스트 파일을 읽는것을 진행하고 있습니다.
예를들어
type pro
name as string *4
save_temp as string *8
end type
ABCD 하나둘셋 사자 이라는 텍스트 파일이 있을 경우에 제가 시도 해보고 있는것은 이진파일로
Open Pfilename For Binary As Pfilenumber
Get Pfilenumber, , pro.name 을 했을 경우 제가 원했던 abcd 가 정상적으로 들어갔습니다.
그런데 다시 한번더 Get Pfilenumber, , pro.save_temp 를 하면 제가 원하는것은 구조체에 save_temp가 8바이트
선언 되었기 때문에 하나둘셋 까지만 얻어 오고 싶습니다(한글자를 2바이트로 계산)
하지만 위의 코드를 하면 하나둘셋은 물론 사자 까지 다 까지 읽어 오게 됩니다...
제가 초보라서 방법을 몰라서..질문드리는데 abc같은 문자는 1바이트로 계산 글자는 2바이트로 계산해서
구조체에 할당된 만큼 파일을 읽어 올수 있는 방법좀 부탁드리겠습니다..
(랜덤파일이나 이진파일 어느방법이든 상관없습니다..)
초보라서 코드로 자세히 설명을 좀 부탁드릴께요..(현재는 글자도 1바이트로 인식을 합니다..)
랜덤 파일은 사용해야 하면 어떻게 해야하는지 자세히좀 부탁드려요.
Forums:
저도 잘 모르지만...
문제해결에 필요한것들을. 찾아가는 다양한 방법에 대해서 알려드리겠습니다.
1byte 만 읽고 쓰는건. fread() 등에 파일 함수로도 가능합니다.
책 보시면 한글과 문자 관련해서 예제가 있습니다.
MFC (Visual C++) 책
C 책
C++ 책
Windows API 책
MSDN
인터넷 검색
구조체 패딩이라고 해서. 빈공간이 생기는 문제가 있으니. #pragma pack 구조체 패킹. 패딩 비트.등에 유의하시기 바랍니다.
혹은 아예 패딩이 생기지 않도록. 크기를 지정하셔야 합니다. 찾아서 테스트 해보세요.
국립국어원
http://www.korean.go.kr/
KLDP 에서 한글 검색
https://kldp.org/search/google?cx=partner-pub-6651292044448473%3Ajz430d1s80g&cof=FORID%3A11&query=%ED%95%9C%EA%B8%80&op=%EC%B0%BE%EA%B8%B0&hl=ko&safe=medium&form_build_id=form-FCTFoJ49NV4wPNbQX21zJDTcfrBs59CxTQvJ2j6C7hM&form_token=84da06de8f774c14c722256c3b2c18ee&form_id=google_cse_searchbox_form
KLDP Wiki
https://wiki.kldp.org/wiki.php
네이버와 구글에서 검색할 단어들
fread()
fread() MSDN
fread() MAN
C 언어 한글
TCHAR
UNICODE
UTF-8
ANSI
MULTIBYTE
데브피아 자료실. 강의실에서 한글 검색 - 여기 한글 관련 소스 예제가 많습니다.
http://search.devpia.com/MAEULResult.aspx?KeyW=%uD55C%uAE00&keyr=title&boardID=278&MAEULNo=20
http://search.devpia.com/MAEULResult.aspx?page=1&keyw=%ED%95%9C%EA%B8%80&keyr=title&boardID=51&MAEULNo=20
Windows API 프로그래밍
http://www.soen.kr/
cplusplus
http://www.cplusplus.com/reference/cstdio/fread/
정보처리기능사
정보처리산업기사
정보처리기사
컴퓨터과학과
전자계산과
정보통신과
직업 전문학교
도서관
서점
조합형
완성형
2 벌식
3 벌식
IME
Locale()
KS
Euc-kr
iconv()
네이버 책 검색
http://book.naver.com/search/search.nhn?query=%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EB%8A%A5%EC%82%AC
OLC 센터 - 무료강의
http://olc.oss.kr/search/list.jsp
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
바이트 배열을 이용해야 합니다.
저도 안해봤는데, 질문을 보니 Binary 모드에서 String 형을 이용하면 글자 수 기준으로 Input/Output을 하는 모양입니다.
그렇게 하지 말고, 원하시는 글자 크기만큼 바이트 배열을 선언해서 바이너리를 읽어온 뒤 그 값을 유니코드 문자열로 바꿔주면 됩니다.
(비주얼 베이직 6의 문자열 형은 내부적으로 유니코드를 사용)
다음 코드를 참고하시기 바랍니다.
Dim buf(7) As Byte ' ### 8바이트 배열
Get #파일번호, , buf
문자열 = StrConv(buf, vbUnicode)
댓글 달기