|
하안인 님이 쓰신 글 :
: 김백일.cedar 님이 쓰신 글 :
: : 하안인 님이 쓰신 글 :
: : : TIniFile* pif = new TIniFile(".\\20030218.txt");
: : : pif->ReadSections(ListBox1->Items);
: : :
: : : 명령어를 써서 Section값을 ListBox1에다 집어 넣었더니
: : : 1260여개의 섹션값만 읽어오네요.
: : : 파일에는 만개정도의 섹션이 있는데....
: : :
: : : ReadSections 명령어의 문제인가요.
: : :
: : : 그리고 TIniFile을 써서 파일을 조작하는(추가)것보다
: : : fopen()을 이용해서 추가검색 하는것이 속도가 몇십배 빠른데
: : : TiniFile은 몇개의 정보만 입력 / 수정하는 명령어인가요.
: :
: : 맞습니다. 맞고요... ^^;
: : TiniFile은 프로그램의 설정 정보를 간단히 읽고 쓰는 INI 파일용으로
: : 사용하는 것이지, 위와 같이 대용량의 정보를 처리하는 용도로는 쓸 수 없습니다.
: :
: : 이럴 경우에는 일반적인 파일 입출력 함수를 사용하시던가,
: : TStringList 객체를 동적 생성하신 후,
: : LoadFromFile, SaveToFile 메소드를 사용하실 것을 권합니다.
: :
:
: 일반적인 파일 입출력 함수로 수정은 어떻게 할 수 있나요.
: TIniFile에서는 WriteString함수로 수정이 가능한데 입출력 함수에서는
: 어떻게 처리해야 하나요.
'일반적인 파일 입출력 함수'는 단지 입출력만 하는 기능일 뿐,
메모리상에 어떻게 저장할 것인지는 프로그래머가 직접 구현해야합니다.
이게 귀찮다면, 역시 TStringList를 쓰실것을 권합니다.
문자열 리스트에 대한 웬만한 기능은 다 지원합니다.
다음은 도움말(개발자 안내서)에 있는 TStringList 사용 예제입니다(약간 수정).
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ClickList = new TStringList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ClickList->SaveToFile(ChangeFileExt(Application->ExeName, ".LOG")); //Save the list
delete ClickList;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
ClickList->Add(Format("Click at (%d, %d)",ARRAYOFCONST((int)X,(int)Y)); //add a string to the list
}
|