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
[6525] Re:파일 입출력에 대한 질문입니다.
박지훈.임프 [cbuilder] 2492 읽음    2001-04-03 14:06
모름이 님이 쓰신 글 :
: 구조체에 저장된 데이터를 파일(*.txt)로 저장하고
: 그 파일을 읽어 데이터를 다시 구조체에 저장하는 프로그램을 구성하려고 합니다.
: 데이터를 저장하면 아스키문자가 파일로 저장됩니다.
: visual C에서는 그대로 입력되었던 것같은데, 뭔가 더 추가해야 할 사항이 있는지...
: 예제를 올리겠습니다.
: ////////////////////////////////////////////////////////////////////////////////////////
: void __fastcall TForm1::Button1Click(TObject *Sender) //파일로부터 읽기 버튼입니다.
: {
:    AnsiString temp_filename;
:     int iFileHandle;
:     int iFileLen;
:
:     temp_filename=Edit1->Text;
:     if(!FileExists(temp_filename))
:     { //file create
:         iFileHandle=FileCreate(temp_filename);
:         Memo1->Lines->Add("파일이 생성됨.");
:     }
:     else
:     { //file에 있는 데이터 loading
:         iFileHandle=FileOpen(temp_filename,fmOpenReadWrite);
:         iFileLen=FileSeek(iFileHandle,0,2);
:         FileSeek(iFileHandle,0,0);
:         FileRead(iFileHandle,&G_DATA,iFileLen);<=======G_DATA를 찍어보면 이상한 문자가 있습니다.
:         FileClose(iFileHandle);
:         Memo1->Lines->Add(G_DATA.m_data1);
:         Memo1->Lines->Add(G_DATA.m_data2);
:     }
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button2Click(TObject *Sender) //파일에 쓰기 버튼입니다.
: {
:     AnsiString filename;
:     int iFileHandle;
:     int iLen;
:     filename=Edit1->Text;
:
:     iFileHandle=FileCreate(filename);
:     G_DATA.m_data1=Edit2->Text; 
:     G_DATA.m_data2=Edit3->Text;
:     FileWrite(iFileHandle,&G_DATA,sizeof(G_DATA));
:
:     FileClose(iFileHandle);
: }
:
: ===> 다시 해보니, 문자열 빼고는 모두 적용이 됩니다.
: 데이터를 문자열로 하면(AnsiString), 엉뚱한 값이 나오네요.-_-
: 방법을 부탁드립니다.
:


임펠리테리입니다.

안시스트링은 문자열에 대한 래퍼 클래스이므로 클래스 객체를 그대로 파일로 쓰면 엉뚱한 값이 들어갑니다. 안시스트링 외에 기본적인 타입들은 안그렇지요. 설명하신 내용으로 봐서는 비주얼C++에서 했던 방법에서는 스트링을 CString이 아닌 char * 를 쓰셨던 것 같습니다. 빌더에서도 char * 를 쓰시면 똑같이 됩니다. 단, 구조체 내의 char * 타입 변수도 메모리 할당을 해줘야 하지요.

그럼 참고하시길..

+ -

관련 글 리스트
6503 파일 입출력에 대한 질문입니다. 모름이 2281 2001/04/02
6525     Re:파일 입출력에 대한 질문입니다. 박지훈.임프 2492 2001/04/03
6533         Re:Re:파일 입출력에 대한 질문입니다. 모름이 2404 2001/04/03
6536             Re:Re:Re:파일 입출력에 대한 질문입니다. 박지훈.임프 2342 2001/04/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.