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
[17786] Re:[질문]파일에서 읽고 쓰기
유영인 [Chris] [cuperido] 1059 읽음    2002-04-19 16:10
아마도 파일 쓰기 부분에서 잘못 된 것 같아요..

이렇게 직접 쓰는 루틴은 어떠신가요...? CFG 파일에 들어가야할 수가 여러개면, fgets, fputs 를 for 문으로 loop 돌리시면 됩니다. (단, fgets에서는 eof 체크를 해주셔야 겠죠..?)


#include <stdio.h>

#define CONFIG_FILENAME "c:\\test.cfg"
#define DEFAULT         1

byte    COMPORT;


//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

FILE              *fiHandle;
char              chString[255];


fiHandle = fopen(CONFIG_FILENAME, "rb");
FillMemory(&chString[0], sizeof(chString), 0);

if(fiHandle)
   fgets(chString, sizeof(chString), fiHandle);

COMPORT = (BYTE)(atoi(chString)) < 1 || (BYTE)(atoi(chString)) > 4 ?
           DEFAULT : (BYTE)(atoi(chString));

RadioGroup1->ItemIndex = COMPORT - 1;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{

FILE              *fiHandle;
char              chString[255];


fiHandle = fopen(CONFIG_FILENAME, "wb");
sprintf(chString, "%d\n", COMPORT);

if(fiHandle)
   fputs(chString, fiHandle);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{

COMPORT = RadioGroup1->ItemIndex + 1;

}





권혁준 님이 쓰신 글 :
: 안녕하세요
: 바쁘시더라도 함 봐주셔요...
:
: fstream IniFile("화일명.cfg");
:
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
:
:    IniFile.getline(StoredComSetting,2);
:    ComPort = (BYTE)(atoi(StoredComSetting));
:
: }
: void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
: {
:    IniFile.seekg(0,ios::beg);
:    IniFile << (int)(ComPort) << "\n";
:    DestroySystems();
: }
: // 컴포트 선택 다이얼로그
: void __fastcall TPortSelection::FormCreate(TObject *Sender)
: {
:    // Range Check on create to eliminate errors.
:    if (ComPort > 4) {// com4까지만 있음
:       ComPortSelectionGroup->ItemIndex = 1;
:       }
:    else {
:       ComPortSelectionGroup->ItemIndex = ComPort-1;
:       }
: }
: 메인폼의 Create에서 파일에 입력된 포트값을 읽어서 컴포트 선택 다이얼로그가 뜰때
: 그 값대로 라디오버튼을 체크합니다....
: 메인폼이 끝날때 그값을 파일에 저장해 놓구요...
:
: 문제는.....
: 처음 실행해서 컴포트 라디오버튼을 체크한후 프로그램 종료후 다시 실행 시키면
: CFG 파일에 그 값이 저장이 안되서 컴포트가 선택이 안됩니다.....
: 그래서 cfg파일을 열어서 제가 임으로 숫자를 넣어 주면....그다음 부터는...
: 제대로 동작이 됩니다...
: 컴포트 바꾸고 종료후 다시 실행하면...cfg파일에서 읽어와서 마지막에 세팅됬던..
: 컴포트에 체크가 되지요....
:
: 이유를 모르겠습니다.........
: cfg파일을 강제적으로 수정을 가한후 하면 되네요......
: 이소스는 bcb3 버젼에서 짰던 소스구요....전 5를 사용하고 있습니다...
:
: 살려주세요............
: 혹시 이방법 말고 딴 방법이 있으면 알려주셔도 감사하겠습니다...
:
:
:

+ -

관련 글 리스트
17777 [질문]파일에서 읽고 쓰기 권혁준 1234 2002/04/19
17799     Re: 굳이 파일 입출력을 하실 필요는 없습니다. 김백일 1057 2002/04/19
17786     Re:[질문]파일에서 읽고 쓰기 유영인 [Chris] 1059 2002/04/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.