안녕하세요.
이진파일(특정형태로 구성된 데이타파일)로 부터 값을 읽어들이고 싶은데 잘 되지
않네요.
제가 샘플로 작성한 소스를 보시고 답변 부탁드리겠습니다.
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.
부족한 초보였습니다. 그럼..
비형태화 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.
>
>
> 부족한 초보였습니다. 그럼..