저장한 갯수를 다른 섹션에 저장하는 방식도 참 좋을것 같네요
갯수를 따로 저장하지 않고 하는 방법도 있습니다.
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 파일 바로 읽어오는 것. 부탁합니다.
: :
: : 좋은 하루 되세요`