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
[54652] Re:Re:Re:TIniFile 질문요
김재범 [lucyfer7] 2356 읽음    2008-09-24 09:32
답변해 주신 두분께 감사 드립니다.

제가  만드는게 정석이 아니라 모르는것 찾고 찾고 하다보니 이상하게 안 쓰는 코드도 많이 쓰게 되네요
이번에 저장하는 섹션에 자식 폼의 수만큼 저장하는 거라, 현재 활성화된 카운터를 멤버 변수에 넘겨 줌으로써,
카운터를 키에 저장해서 카운터를 얻었구요.

현재 폴더 구하는 것은 직접 경로를 다 적어주면서 해결 햇습니다.
-> 그런데 생각해보니 다른곳에서 실행해야 하니까 장성호님의 절대경로 구하는 것을 사용하였더니
   제가 원하는 던 것을 구할수 있었습니다. 감사합니다.~^^*

그런데 Tinifile이 접하기 쉬운거라 그런지 조회수가 많네요. 신기;; ㅎㅎ 좋은 하루 되시고, 감사합니다. ^^*


장성호 님이 쓰신 글 :
: 저장한 갯수를 다른 섹션에 저장하는 방식도 참 좋을것 같네요
:
: 갯수를 따로 저장하지 않고 하는 방법도 있습니다.
:
: 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 질문요 김재범 1787 2008/09/23
54649     Re:TIniFile 질문요 30억 2032 2008/09/23
54650         Re:Re:TIniFile 질문요 장성호 2750 2008/09/23
54652             Re:Re:Re:TIniFile 질문요 김재범 2356 2008/09/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.