Q&A

  • 이진파일 읽어오기
일정한 타입의 이진파일이 있습니다.

앞 84바이트는 파일정보

그리고 4바이트씩 float형이 있는데요...

텍스트 파일처럼 읽어 올수 없나요...?

답변해주세요..

1  COMMENTS
  • Profile
    김영대 1999.08.05 23:19
    전근수 께서 말씀하시기를...

    > 일정한 타입의 이진파일이 있습니다.

    > 앞 84바이트는 파일정보

    > 그리고 4바이트씩 float형이 있는데요...

    > 텍스트 파일처럼 읽어 올수 없나요...?

    > 답변해주세요..



    안녕하세요 김영대입니다

    BlockRead() 를 사용해 보세요

    BlockRead() 는 주어진 바이트만큼 읽어올 수 있습니다

    아래는 BlockRead() 를 이용한 파일복사 소스인데 사용법만 참고해 보세요



    // Block단위의 복사

    function fcMemBlock(srcfname,tgtfname: string): boolean;

    var

    srcf,tgtf: file;

    NumR,NumW: integer;

    buff: array[1..2048] of char;

    begin

    Result := False;

    if not CheckSrcF(srcfname) then

    System.Exit;

    if not OverWriteTgt(srcfname,tgtfname) then

    System.Exit;



    Result := True;

    AssignFile(srcf, srcfname);

    Reset(srcf, 1); {Open file, Record size = 1}

    AssignFile(tgtf, tgtfname);

    Rewrite(tgtf, 1); {Create file, Record size = 1}

    repeat

    BlockRead(srcf, buff, SizeOf(buff), NumR);

    BlockWrite(tgtf, buff, NumR, NumW);

    until (NumR = 0) or (NumW <> NumR);

    CloseFile(srcf);

    CloseFile(tgtf);

    end;