Q&A

  • 이진파일로 부터 자료를 읽고 싶은데요..
안녕하세요.



이진파일(특정형태로 구성된 데이타파일)로 부터 값을 읽어들이고 싶은데 잘 되지

않네요.



제가 샘플로 작성한 소스를 보시고 답변 부탁드리겠습니다.



type

LowData = record

TagSize: LongInt; // Tag 사이즈

PositionX: LongInt; // 번호판 X 좌표

PositionY: LongInt; // 번호판 Y 좌표

AreaNum: Byte; // 지역번호

CarType: Byte; // 차종 구분

Consnant: Byte; // 번호판 앞 자음

Vowel: Byte; // 번호판 앞 모음

Num1: Byte; // 차량번호 첫째자리

Num2: Byte; // 차량번호 둘째자리

Num3: Byte; // 차량번호 셋째자리

Num4: Byte; // 차량번호 넷째자리

Reserved1: Byte; // 예약 1

Reserved2: Byte; // 예약 2

OverSpeed: LongInt; // 위반속도

LimitSpeed: LongInt; // 제한속도

LineNum: LongInt; // 차선번호

NumImage: LongInt; // 영상갯수

ImageSize: LongInt; // 영상크기(전체)

ImageSize2: LongInt; // 영상크기(번호판)

//CarImage: array of Byte;

//PlateImage: array of Byte;

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;



procedure TForm1.Button1Click(Sender: TObject);

var

LowFile: File;

DstData: LowData;

NumRead: Integer;

begin

if OpenDlg.Execute then begin

AssignFile(LowFile, OpenDlg.FileName); // 이미지 파일 연결

Reset(LowFile);

with DstData do begin

BlockRead(LowFile, TagSize, SizeOf(TagSize), NumRead);

BlockRead(LowFile, PositionX, SizeOf(PositionX), NumRead);

BlockRead(LowFile, PositionY, SizeOf(PositionY), NumRead);

BlockRead(LowFile, AreaNum, SizeOf(AreaNum), NumRead);

BlockRead(LowFile, CarType, SizeOf(CarType), NumRead);

BlockRead(LowFile, Consnant, SizeOf(Consnant), NumRead);

BlockRead(LowFile, Vowel, SizeOf(Vowel), NumRead);

BlockRead(LowFile, Num1, SizeOf(Num1), NumRead);

BlockRead(LowFile, Num2, SizeOf(Num2), NumRead);

BlockRead(LowFile, Num3, SizeOf(Num3), NumRead);

BlockRead(LowFile, Num4, SizeOf(Num4), NumRead);

BlockRead(LowFile, Reserved1, SizeOf(Reserved1), NumRead);

BlockRead(LowFile, Reserved2, SizeOf(Reserved2), NumRead);

BlockRead(LowFile, OverSpeed, SizeOf(OverSpeed), NumRead);

BlockRead(LowFile, LimitSpeed, SizeOf(LimitSpeed), NumRead);

BlockRead(LowFile, LineNum, SizeOf(LineNum), NumRead);

BlockRead(LowFile, NumImage, SizeOf(NumImage), NumRead);

BlockRead(LowFile, ImageSize, SizeOf(ImageSize), NumRead);

BlockRead(LowFile, ImageSize2, SizeOf(ImageSize2), NumRead);

end;

CloseFile(LowFile);

end;

end;



end.





부족한 초보였습니다. 그럼..

2  COMMENTS
  • Profile
    최용일 2001.11.13 00:10
    안녕하세요. 최용일입니다.



    비형태화 File형의 경우 디폴트로 읽기/쓰기 레코드 크기는 128바이트입니다...



    아래처럼 바꾸세요...



    Reset(LowFile, 1);



    ^^ 항상 즐코하세요...



    조덕진 wrote:

    > 안녕하세요.

    >

    > 이진파일(특정형태로 구성된 데이타파일)로 부터 값을 읽어들이고 싶은데 잘 되지

    > 않네요.

    >

    > 제가 샘플로 작성한 소스를 보시고 답변 부탁드리겠습니다.

    >

    > type

    > LowData = record

    > TagSize: LongInt; // Tag 사이즈

    > PositionX: LongInt; // 번호판 X 좌표

    > PositionY: LongInt; // 번호판 Y 좌표

    > AreaNum: Byte; // 지역번호

    > CarType: Byte; // 차종 구분

    > Consnant: Byte; // 번호판 앞 자음

    > Vowel: Byte; // 번호판 앞 모음

    > Num1: Byte; // 차량번호 첫째자리

    > Num2: Byte; // 차량번호 둘째자리

    > Num3: Byte; // 차량번호 셋째자리

    > Num4: Byte; // 차량번호 넷째자리

    > Reserved1: Byte; // 예약 1

    > Reserved2: Byte; // 예약 2

    > OverSpeed: LongInt; // 위반속도

    > LimitSpeed: LongInt; // 제한속도

    > LineNum: LongInt; // 차선번호

    > NumImage: LongInt; // 영상갯수

    > ImageSize: LongInt; // 영상크기(전체)

    > ImageSize2: LongInt; // 영상크기(번호판)

    > //CarImage: array of Byte;

    > //PlateImage: array of Byte;

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.Button2Click(Sender: TObject);

    > begin

    > Close;

    > end;

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > LowFile: File;

    > DstData: LowData;

    > NumRead: Integer;

    > begin

    > if OpenDlg.Execute then begin

    > AssignFile(LowFile, OpenDlg.FileName); // 이미지 파일 연결

    > Reset(LowFile);

    > with DstData do begin

    > BlockRead(LowFile, TagSize, SizeOf(TagSize), NumRead);

    > BlockRead(LowFile, PositionX, SizeOf(PositionX), NumRead);

    > BlockRead(LowFile, PositionY, SizeOf(PositionY), NumRead);

    > BlockRead(LowFile, AreaNum, SizeOf(AreaNum), NumRead);

    > BlockRead(LowFile, CarType, SizeOf(CarType), NumRead);

    > BlockRead(LowFile, Consnant, SizeOf(Consnant), NumRead);

    > BlockRead(LowFile, Vowel, SizeOf(Vowel), NumRead);

    > BlockRead(LowFile, Num1, SizeOf(Num1), NumRead);

    > BlockRead(LowFile, Num2, SizeOf(Num2), NumRead);

    > BlockRead(LowFile, Num3, SizeOf(Num3), NumRead);

    > BlockRead(LowFile, Num4, SizeOf(Num4), NumRead);

    > BlockRead(LowFile, Reserved1, SizeOf(Reserved1), NumRead);

    > BlockRead(LowFile, Reserved2, SizeOf(Reserved2), NumRead);

    > BlockRead(LowFile, OverSpeed, SizeOf(OverSpeed), NumRead);

    > BlockRead(LowFile, LimitSpeed, SizeOf(LimitSpeed), NumRead);

    > BlockRead(LowFile, LineNum, SizeOf(LineNum), NumRead);

    > BlockRead(LowFile, NumImage, SizeOf(NumImage), NumRead);

    > BlockRead(LowFile, ImageSize, SizeOf(ImageSize), NumRead);

    > BlockRead(LowFile, ImageSize2, SizeOf(ImageSize2), NumRead);

    > end;

    > CloseFile(LowFile);

    > end;

    > end;

    >

    > end.

    >

    >

    > 부족한 초보였습니다. 그럼..

  • Profile
    조덕진 2001.11.14 03:37
    없는데...