|
던켄 님의 소스에서 최소한만 수정한 것입니다.
개인적인 생각으론 별로 좋은 방법은 아닌것 같군요.
아무튼 참고하세요.
void __fastcall TMyMain::FormClose(TObject *Sender, TCloseAction &Action)
{
FILE *out;
int MySubData;
if ((out = fopen("data.ini", "wt")) == NULL)
{
fprintf(stderr, "Cannot open input file.\n");
return;
}
if(Form2->Visible) MySubData = 1;
else MySubData = 0;
fprintf(out, "%d", MySubData);
fclose(out);
}
아래 읽어 오는거는 MySub폼에 넣어주세요.
MyMain 생성시 넣으면 MySub가 생성전이라서 MySub->Visible = true; 이렇게하면 즉사~~
최소한만 수정하려다보니 ...
void __fastcall TMySub::FormCreate(TObject *Sender)
{
FILE *in;
int MySubData;
if((in = fopen("data.ini", "rt")) ==NULL)
{
fprintf(stderr, "Cannot open input file.\n");
return;
}
if(fscanf(in,"%d",&MySubData)==1)
{
if(MySubData == 1) MySub->Visible = true;
}
fclose(in);
}
던켄 님이 쓰신 글 :
: 씨빌더 1주일도 안된 초봅니다.
:
: 제가 만든 프로그램은요.
: 하나의 창에서 버튼을 누르면 다른 또하나의 창이 열리는데요.
: 프로그램을 종료할 때 두번째 창이 열려있으면 1을 그렇지 않았을 경우에는 0을
: 텍스트 파일에 저장했습니다.(fprintf를 이용했습니다.)
:
: 그리고 나중에 프로그램을 실행시키면 텍스트에 저장된 값을 읽어와서
: 1이면 두번째 창이 열린 상태로 만들고 0이면 창 하나만 뜨도록 하려고 합니다.
:
: 아래는 제가 짠 소스부분입니다.
:
: void __fastcall TMyMain::FormClose(TObject *Sender, TCloseAction &Action)
: {
: FILE *out;
: char *MySubData;
:
: if ((out = fopen("data.ini", "wt")) == NULL)
: {
: fprintf(stderr, "Cannot open input file.\n");
: Close();
: }
:
: fprintf(out, "%d", MySub->Visible);
:
: fclose(out);
:
: }
:
: __fastcall TMyMain::TMyMain(TComponent* Owner)
: : TForm(Owner)
: {
: char buf[2];
: FILE *in;
:
: if((in = fopen("data.ini", "rt")) ==NULL)
: {
: fprintf(stderr, "Cannot open input file.\n");
: Close();
: }
: fgets(buf, sizeof(buf), in);
: if(buf=="1")
: {
: MySub->Visible = true;
: }
: }
:
: 이렇게 했는데 if(buf=="1")에서 buf값이 0\0등 이상하게 나옵니다.
: 첨에 buf를 선언할 때 buf[1], buf[1024]등으로 선언도 해봤는데
: 역시 if문 안쪽으로 들어가지는 못하네요.
:
: 저장할 때도 마찬가지여서 fputs나 fputc로 집어넣으면 0, 1이 안들어가고 †표시만 생기더군요.
: 그래서 저장은 fprintf로 어떻게 해결했는데 이제는 읽어오는게 문제네요...
:
: 나중엔 이름, 나이, 성별 등도 저장해야되는데 간단한 숫자하나 읽어오는데도 이렇게 힘이드니...
: 걱정입니다... 부디 고수님들의 많은 조언 부탁드립니다.
|