C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[851] [답변] DREAMSYS/ TFileStream 사용법 알려주세요./프포
박지훈.임프 [cbuilder] 6674 읽음    1999-01-03 10:48
안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.

TFileStream은 파일 입출력을 하기 위한 vcl 클래스입니다.

파일 입출력을 위한 다른 함수군들도 있긴 하지만, 이 TFileStream을 사용하면

vcl에서 지원하는 여러가지 스트리밍 지원 함수들과 연결하여 사용할 수 있기때문에

여러가지로 응용이 가능합니다.

이것을 사용하기 위해서 제일 먼저 알아야 하는 것은, 물론 클래스의 생성이죠.

TFileStream *File = new TFileStream(파일이름, 오픈모드);

오픈모드라고 제가 적었던 데서 눈치를 채시겠지만, 이 TFileStream은 생성과 동시에

지정한 파일을 오픈합니다. 그리고 파일을 write하기 위해서 오픈 시키는 거라면

fmOpenWrite, 읽기 위해서라면 fmOpenRead를 지정합니다.

생성과 동시에 바로 리턴값을 확인하는 것이 좋습니다. 도스모드에서는 파일이

존재하기만 하면 거의 확실히 오픈이 되지만, 윈도우즈에선 다른 어플에서 사용하고

있다든지 공유거부 락이 걸렸다든지 하는 이유로 오픈이 실패했을 가능성이 많습니다.

오픈모드 중 공유모드에 해당하는 것에 대해선 자세히 설명하지 않겠습니다.

그다음으로 특정 데이터를 쓰기위한 방법입니다.

TFileStream 클래스는 도스에서 사용하던 스트리밍과 거의 같은 방법을 사용하국퓐?

함수의 사용법도 거의 비슷합니다.

File->Write(&데이터가들어있는변수, 데이터의크기);

반드시 변수! 여야 합니다. TFileStream의 Write 메소드는 파일에 쓸 데이터 값을

요구하는 것이 아니라 데이터가 들어있는 변수의 주소를 요구합니다. 그래서 반드시

& 도 붙여줘야 하구요. (물론 표준 C 스트링(널로 끝나는)이라면 필요없겠죠. 자체가

포인터니까.) 두번째 인자는 말했다시피 데이터가 들어있는 변수의 바이트 크기를

넘겨주면 됩니다. 그러니까, int 형인 MyIntVar란 변수의 값을 파일에 쓴다면,

File->Write(&MyIntVar, sizeof(int));

이렇게 하면 되겠죠.

파일 읽기는 쓰기와 거의 유사합니다. 단지 Write 메소드 대신에 Read를 쓴다는 것

외에는.

특정 위치로 점프하기 위해서 도스에서는 fseek(스트리밍계열), lseek(핸들계열)을

사용했듯이, TFileStream에도 Seek 메소드가 존재합니다. 사용법은 동일하구요.

하지만 이것보다는 Position 프로퍼티를 사용하는 것이 훨씬 더 편합니다.

역할은 Seek?) 와 동일하지만, 훨씬 보기 좋고 편하게 코딩을 할 수 있죠.

File->Position++; 하면 읽을 위치가 1바이트 앞으로 넘어갑니다.

TfileStream 클래스에서는, 파일을 오픈하기 위한 Open 이 없이 대신 생성자에서

처리했듯이, Close 대신 파괴자에서 처리합니다. 그러므로 단순히 delete해주면

파일이 닫히게 됩니다.

delete File;


그럼, 도움되시길...




독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
841 [질문] TFileStream 사용법 알려주세요./프포 dreamsys 4144 1998/12/31
851     [답변] DREAMSYS/ TFileStream 사용법 알려주세요./프포 박지훈.임프 6674 1999/01/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.