|
: 임펠리테리입니다.
:
: 빌더에서 사용할 수 있는 파일 억세스 방법은, C 함수로서 터보씨에서 사용해왔던 표준 파일 IO 함수들(핸들계열:open()으로 시작하는 함수군, 스트림계열:fopen()으로 시작하는 함수군) 외에도 Win32 SDK에서 제공하는 파일 IO 함수들 (CreateFile() 로 시작하는 함수군)이 있으며, 빌더의 VCL에서 사용하기 편하게 클래스화 된 것으로 몇가지가 더 있습니다. 여기서는 후자에 대해 설명을 하겠습니다.
:
: 만약 읽으려는 파일이 텍스트이고 또 크기가 그렇게 크지 않다면(프로젝트의 성격에 따라 크기가 크다는 기준이 달라질 수 있지만 1메가가 넘지 않는 수준이라고 생각합시다) 그냥 TStringList를 생성하고 LoadFromFile() 메소드를 써서 파일을 통째로 읽어들인 후 Strings[] 프로퍼티를 이용해서 각 라인을 읽는 것이 가장 편합니다. 이것은 굳이 코딩을 보여드릴 필요는 없겠지요?
:
: 만약 파일이 너무 커서 읽어들이는데 걸리는 시간이나 메모리가 문제가 되거나 혹은 파일의 내용이 텍스트가 아닌 경우 TFileStream을 사용하면 됩니다. 이 클래스는 Win32 파일 IO 함수들을 클래스화한 것으로서 사용이 간편할 뿐 아니라 다른 스트림과 연결해서 빠르고 간단한 처리가 가능합니다.
:
: TFileStream *File = TFileStream("파일경로", fmOpenRead); // 파일스트림 생성: 파일오픈
: File->Seek(0, soFromBeginning); // 파일스트림에서 특정 위치로 이동 (여기서는 의미없음)
: char *Buffer = new char[읽을크기];
: File->Read(Buffer, 읽을크기);
: delete File;
:
: 그럼 참고하시길...B
와~ 임펠리테리님 하이염~ ^^
근데.. 우짜져~ ^^ 해결을 해분졌는뎅~ ^^
근데.. 임프님이.. 알려주신 방법은.. CBuilder문법인가바여? ^^;;
저런건 머르게써서.. 걍.. Turbo C에서 하던데루 했는데염? ^^;;
그런데 문제가 생겨서여 ^^
fgets로 한줄 한줄 읽어왔거던여~ ^^
근뎅.... 한줄의 끝을 읽어버려서.. 일어온 문자가 sooya라구하면 sooya뒤에 특수문자가 하나
찍힙니다..
읽어온 방법은
while(!feof(in)) // 화일의 끝이냐?
{
fgets(name, 255, in);
j++;
k = name;
switch(j)
{
case 1 : this->N11->Caption = k;
ShowMessage("현제 K 값은" + k + "입니다");
break;
case 2 : N21->Caption = name;
break;
case 3 : N31->Caption = name;
break;
case 4 : N41->Caption = name;
break;
case 5 : N51->Caption = name;
이렇구요~
머 저은 방법 없을까여? ^^
여하튼.. 답변주셔서.. 감사드리구요.. 저거뚜 함 해볼께여 ^^
꼼지락.수야였습니다.
|