|
장성호 님이 쓰신 글 :
: 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(); // 읽은 데이터를 콤보박스 리스트에 넣기.
: : : : : :
: : : : : : 이렇게 하면 파일에서 읽은 데이터를 콤보박스의 리스트에 넣을 수 있지 않나요?
: : : : : :
: : : : : : 오늘 처음 해보는것이라 모르겠습니다.
: : : : : :
: : : : : : 도와주세요.ㅜㅜ
|