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
[48331] Re:Re:Re:Re:Re:정해진 위치에 있는 ini파일을 읽어오려면요;;ㅠㅠ
장성호 [nasilso] 1585 읽음    2007-03-09 15:04
suni1300 님이 쓰신 글 :
: //실행파일과 같은 이름의 TIniFile  object를 만든다.
: :     TIniFile* pif = new TIniFile(ChangeFileExt(Application->Filename, ".ini"));
:  이 부분은 Windows폴더에 있는 실행파일과 같은 이름의 ini파일을만든다는 뜻이지요?

   ==> 아닙니다.
   Application->Filename 이 만약   c:\test\project1.exe 라면
   ChangeFileExt(Application->Filename, ".ini")); 이걸통해
   c:\test\project1.exe  을 ==> c:\test\project1.ini로 바꿔주는 것입니다.
  

   만약 projet1.exe 파일이 있는 폴더를 정보만들 알고 싶다면 
   String sPath = ExtractFilePath ( Application->Filename );
   이렇게 하면 됩니다.

:
: 음..
: 현재 실행파일이 있는 폴더에 들어있는 ini파일을 오픈하려면
: 어떤 함수를 써야 하나요?
  
     ==>  ???
     ini 파일의 정확한 이름을 알면 되겠죠..
     open이 문제가 아니라 실행파일이 있는 폴더의 위치를 찾는게 문제가  아닌가요?
     그건 바로위에 설명했지요!

    그리고 실행파일이 있는 폴더에 ini를 호출하려면  Fullname을  입력해도 되지만 
   TIniFile* pif = new TIniFile("c:\test\project1.ini");

   그냥 TIniFile* pif = new TIniFile("project1.ini"); // 이렇게 해도 됩니다.
   실행파일이 현재 있는 위치에서 파일을 찾거든요 


: 이런 기능을 수행하는 함수를 찾으려 할 때 헬프에서는 어떻게 찾을 수 있나요?
: 헬스사용에 능숙하지 못해서..
: 찾기가 힘드네요;;
 
    ==>
    1) 아무 함수에서나 마우스 를 가져다 놓으시고 오른쪽 클릭해 보세요
    그러면 pop메뉴에 "Find Declaration" 이라는 메뉴가 나옵니다.
    그걸 클릭하면   함수가 선언된 파일을 찾아 열어 줍니다.
   
    ChangeFileExt  함수의 경우   SysUtils.hpp  파일을 열어주는데
    이파일에 보면 파일조작 관련 유용한 함수가 엄청 많이 있습니다.

   2) 그리고 또 vcl 함수에 마우스 커서 가져다 놓으시고 키보다 F1을 클릭하세요
       그러면 help파이을 보실수 있을겁니다.
       help파일을 보고 잘이해가 안되면
      help파일에 example이 있는  경우가 있는데 example을 보시구요

   3) 그것도 안되면  함수이름만 copy해와서 여기 포럼에서 검색해 보세요


      


: 죄송합니다.
: 그리고 감사합니다.^0^
:
:
:
: 장성호 님이 쓰신 글 :
: : #include "IniFiles.hpp"
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: :
: :     //실행파일과 같은 이름의 TIniFile  object를 만든다.
: :     TIniFile* pif = new TIniFile(ChangeFileExt(Application->Filename, ".ini"));
: :
: :     //특정섹션아래의 Key값 모두 읽오온다.
: :     TStringList *sKeyLst = new TStringList;   //Key값만 읽어오기 위한 변수 생성
: :     pif->ReadSection("LANGUAGES",sKeyLst );   //[LANGUAGES] 섹션아래의 Key만 모두 읽어옴
: :
: :     for ( int i=0;i<sKeyLst->Count;i++)
: :     {
: :         //[LANGUAGES] 섹션의 각 Key의 Value를 String으로 읽어와서 ComboBox에 추가함
: :         ComboBox1->Items->Add(pif->ReadString("LANGUAGES",sKeyLst->Strings[i],""));
: :     }
: :
: :     //사용한 object를 free
: :     delete sKeyLst;
: :     delete pif;
: : }
: :
: : 그럼....
: :
: :
: : suni1300 님이 쓰신 글 :
: : : Application Filename;
: : : Filename = “a.ini”;
: : : TIniFile* pif new TIniFile(TChangeFileExt(Application->Filename, “ini”));
: : : 제가 하려는 것이 실행파일이 있는 위치에서ini파일을 읽어오려고 하는데
: : : 이렇게 하면 안되나요?
: : : 나름대로 알아본 결과대로 짠 것인데 안되네요..
: : :
: : :
: : :
: : : 장성호 님이 쓰신 글 :
: : : : 먼저 ini파일이 어떤 format으로 기록되는지 아셔야 합니다.
: : : :
: : : : Section 과 Key 그리고 Value
: : : :
: : : : 1) ReadSections 함수는  ini 파일에 있는 대괄호 "[    ]" 로 묶여있는
: : : : 섹션 정보만을 모두 읽어오는 함수입니다.
: : : : 원하시는 작업이 섹션만 모두 읽오오시고자 한다면
: : : :   pif->ReadSections(ComboBoxEx1->Items);  이렇게만 하면 되겠죠
: : : :
: : : : 2) 만약 섹션 밑에 있는 Key정보를 모두 읽어오고자 한다면?
: : : :     Key는 섹션 아래에   '=' 문자 앞쪽에 있는 string입니다.
: : : :
: : : :    [KOREA]  라는 섹션이 있다고 가정하고 "KOREA"섹션 아래의 Key를 모두 읽어오려면
: : : :
: : : :     pif->ReadSection("KOREA",ComboBox1->Items); //이렇게 하면 되겠죠
: : : :
: : : :   
: : : :
: : : : 3) 그러나 원하는 값이  Key가 아니라 특정 Key의 value인 경우에는 섹션과 key를 정해주고 읽어와야 합니다.
: : : :     String str = pif->ReadString("KOREA","msg1","");
: : : :    ComboBox1->Items->Add(str);
: : : :
: : : :
: : : :    //이렇게 해도 됩니다. 그러면 Key정보와 함께 같이 combobox에 들어가겠죠
: : : :    pif->ReadSectionValues("KOREA",ComboBox1->Items);
: : : :
: : : :
: : : : --------
: : : : TIniFile 클래스는 아주 ini파일을 편리하게 접근하도록 만들어진 라이브러리 입니다.
: : : : 클래스 내부 함수이름만 잘 읽어도 ,  도움말 만 잘보아도
: : : : 어떻게 사용해야할지  잘 알수 있을것입니다.
: : : :
: : : : 그럼
: : : :
: : : :
: : : : 참 님께서는 delete를 빠뜨렸네요
: : : :
: : : : delete pif ;
: : : :
: : : :
: : : :
: : : :
: : : : suni1300 님이 쓰신 글 :
: : : : : TIniFile* pif = new TIniFile("language.ini"); // 파일을 열기
: : : : :   
: : : : : pif->ReadSections(ComboBoxEx1->Items); // 파일에 있는 데이터 읽기
: : : : :
: : : : : ComboBoxEx1->ItemsEx->Add(); // 읽은 데이터를 콤보박스 리스트에 넣기.
: : : : :
: : : : : 이렇게 하면 파일에서 읽은 데이터를 콤보박스의 리스트에 넣을 수 있지 않나요?
: : : : :
: : : : : 오늘 처음 해보는것이라 모르겠습니다.
: : : : :
: : : : : 도와주세요.ㅜㅜ

+ -

관련 글 리스트
48318 ini를 이용한 combo box에 대한 질문입니다.ㅠㅠ suni1300 1241 2007/03/08
48320     Re:ini를 이용한 combo box에 대한 질문입니다.ㅠㅠ 장성호 1431 2007/03/08
48327         Re:Re:정해진 위치에 있는 ini파일을 읽어오려면요;;ㅠㅠ suni1300 1586 2007/03/09
48328             Re:Re:Re:정해진 위치에 있는 ini파일을 읽어오려면요;;ㅠㅠ 장성호 1374 2007/03/09
48330                 Re:Re:Re:Re:정해진 위치에 있는 ini파일을 읽어오려면요;;ㅠㅠ suni1300 1319 2007/03/09
48331                     Re:Re:Re:Re:Re:정해진 위치에 있는 ini파일을 읽어오려면요;;ㅠㅠ 장성호 1585 2007/03/09
48332                         Re:Re:Re:Re:Re:Re:감사합니다.!!덕분에 개념이 많이 잡혔습니다.~^^(냉무) suni1300 1319 2007/03/09
48321         Re:Re:ini를 이용한 combo box에 대한 질문입니다.ㅠㅠ suni1300 1036 2007/03/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.