Q&A

  • Text 파일을 읽는 방법...
.DBF 파일을 Text 형태로 열었습니다. 그러면 처음부터 자료에 해당하는 Text가 나오는게 아니고 DBF 파일의 Head에 해당하는 내용이 나오게 됩니다. 그 부분을 건너뛰고 실제 자료에 해당하는 부분을 읽어들이고 싶은데 어케해야 할지를 모르겠어요.

BlockRead 함수를 썼더니 자꾸 access violation 에러가 나구...

방법아시는 분 있으시면 구체적으로 설명좀 해주세요. 꾸뻑...

1  COMMENTS
  • Profile
    김영석 2000.12.18 09:09
    일단 Text 형태로 파일을 열었다면 .. 아마도

    AssignFile(fh); 해서 fh 는 TextFile 형으로 주고 해서 열었을거

    같군요..



    이런거 보다는 TFileStream 을 써보세요..

    그리고 파일을 읽어 들일때에는 버퍼를 설정해서 읽어 들이고요..

    그러면 그 파일을 텍스트로 읽든 바이너리로 읽든 문제가 안되고

    아무거나 다 읽을 수 있습니다.

    아래 예제를 보세요.



    procedure OpenFile(FN: filename);

    var

    strm: TFileStream;

    Buffer: array [0..2047] of byte;

    begin

    strm:=TFileStream.Create('c:autoexec.bat', fmOpenRead);

    try

    Strm.Position:=0; // 일단 리셋..



    // 아래에서 SkipSize 는 헤더의 크기가 됩니다.

    // 헤더크기를 SkipSize 로 정해주시고..

    strm.Skip(SkipSize, soFromCurrent);



    // 그리고 읽을 때에는..

    // 아래정도로 읽으시고..

    // 2048 은 읽을 크기인데 지금은 Buffer 크기입니다..

    Strm.Read(Buffer, 2048);



    // 너무 많이 읽었다 싶을 때는

    // RewindSize 만큼 다시 스트림의 위치를 되돌려 주고..

    Strm.Position:=Strm.Position-RewindSize;



    // 읽은 Buffer 를 분석해서 텍스트만 뽑아내고.. 그러면 될듯..

    finally

    strm.Free;

    end;

    end;



    도움말에서 TFileStream 을 찾아서 해당 메소드를 보고 해보세요.







    fatduck wrote:

    > .DBF 파일을 Text 형태로 열었습니다. 그러면 처음부터 자료에 해당하는 Text가 나오는게 아니고 DBF 파일의 Head에 해당하는 내용이 나오게 됩니다. 그 부분을 건너뛰고 실제 자료에 해당하는 부분을 읽어들이고 싶은데 어케해야 할지를 모르겠어요.

    > BlockRead 함수를 썼더니 자꾸 access violation 에러가 나구...

    > 방법아시는 분 있으시면 구체적으로 설명좀 해주세요. 꾸뻑...