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
[54650] Re:Re:TIniFile 질문요
장성호 [nasilso] 2750 읽음    2008-09-23 21:08
저장한 갯수를 다른 섹션에 저장하는 방식도 참 좋을것 같네요

갯수를 따로 저장하지 않고 하는 방법도 있습니다.

ReadSections //ini 파일에서 대괄호[] 로 싸여진 섹션이름을 모두 읽어줌
ReadSection  // 특정 섹션 및에 있는 Key를 모두 읽어줌
ReadSectionValues // 특정 섹션 및에 있는 Value값을  모두 읽어줌

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TIniFile *ini=new TIniFile("C:\\MyProgram\\Test.ini");

    TStringList *sSecLst=new TStringList;
    TStringList *sKeyLst=new TStringList;
    TStringList *sValueLst=new TStringList;

    ini->ReadSections(sSecLst);               //[] 로 싸여진 섹션 정보를 모두 읽어줌
//    Memo1->Lines->Assign(sSecLst);

    for(int i=0;iCount;i++)
    {
        ini->ReadSection(sSecLst->Strings[i],sKeyLst); //어떤 섹션 및에 Key값을 모두 읽어줌
        ini->ReadSectionValues(sSecLst->Strings[i],sValueLst); //어떤 섹션 밑에 Value값을 모두 읽어줌
    }

    delete sValueLst
    delete sSecLst;
    delete ini;

}



GetCurrentDir()는 현재 실행된 Exe파일이 있는 경로와 다를수 있습니다.

1) SaveDialog로 파일을 다른폴더에 저장하면 CurrentDirectory가 변경되구요
 
2) 프로그램이 시잘할때라도 탐색기에서  사용자가 직접 클릭하거나, 메뉴에서 클릭해서 실행한것이 아니라
     - 시작프로그램에 등록되어있다거나  , 다른 프로그램에서 현재 프로그램을 실행했을경우에는
        프로그램이 막 시작되는 시점이라 할찌라도 CurrentDirectory는 exe파일이 있는 directory와 다를수 있습니다.

[현재 실행중인 exe파일이 있는 절대경로를 가져오려면]
  
   GetCurrentDir 함수를 쓰는것은 좋은 방법이 아니구요
  
   Application->ExeName 와 전역변수이 ParamStr(0) 가 경로를 포함한 실행파일 이름인데 이것을 이용하세요

   실행파일 경로는

   String sExePath = ExtractFilePath(   Application->ExeName ) ;
   또는
   String sExePath = ExtractFilePath(   ParamStr(0) ) ;

그럼.
 
     


30억 님이 쓰신 글 :
: ini파일을 Write하실때
: [dataCount]
: count=3
: 이렇게 폼의 개수를 쓰고 읽으셔서 for문으로 돌리시면 될거 같구요...
: TIniFile *ini = new TIniFile("파일이름.ini");
: "파일이름.ini" -> 절대경로를 사용하시면 될거 같습니다.
: 저같은 경우에는 프로그램 실행할때 절대경로를 변수에 저장해 놓고
:     CurrentDirectory = GetCurrentDir ( ) ;
:
: ini 읽으실때
: TIniFile *ini = new TIniFile(CurrentDirectory +"\\파일이름.ini");
: 이렇게 사용하시면 될거 같습니다.
:
:
: 김재범 님이 쓰신 글 :
: : 여러 섹션의 값을 읽어오는게 힘드네요.
: :
: : 쓰기에서
: : [1]
: : data
: : ..
: :
: : [2]
: : data
: : ..
: :
: : 형식으로 햇구요. 숫자 하나당 폼을 생성하려고 합니다.
: : [1] 의 데이터에는 폼의 정보가 들어있구요
: :
: : 저장은 닫기 전 열려 있는 폼의 갯수 만큼 저장 하는거라 정해져 있지 않습니다.
: : 열기에서 자동으로 opendialog를 사용하지 않고 열려면.
: : TIniFile *ini = new TIniFile("파일이름.ini"); // 실행파일의 디렉토리 이런식으로 하면 된다고 하던데 안 열리네요.
: :
: : 섹션 값이 3개 로 정해져있다면 for 문으로 3번 돌리면 됩니다.
: : 지금은 오픈 다이얼로그로 열어서  for 문 사용으로 생성하는 것 구현이 되었습니다.
: :
: : 섹션 값의 마지막 값을 알수 있다면 그것으로 for 문 돌릴수 있으니 섹션 마지막 값 구하는 것. 또는 섹션의 개수를 구하는 방법을 알고 싶습니다. 그게 없다면 어떻게 해서 읽어와야 할지...
: :
: : 그리고 ini 파일 바로 읽어오는 것. 부탁합니다.
: :
: : 좋은 하루 되세요`

+ -

관련 글 리스트
54648 TIniFile 질문요 김재범 1788 2008/09/23
54649     Re:TIniFile 질문요 30억 2032 2008/09/23
54650         Re:Re:TIniFile 질문요 장성호 2750 2008/09/23
54652             Re:Re:Re:TIniFile 질문요 김재범 2357 2008/09/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.