아래 질문을 했었는데 제가 핵심을 빠트렸네요 ^^...
화일안에 [헤더1][data1][헤더2][data2].... 이런 구조를 가진
화일이 20메가 정도 됩니다.
화일이크면 FileStreem 을 쓰라고 하던데 ... 메모리 때문인가요?
화일안에 헤더정보마다 Data 사이즈가 다 달라서 Type...Record 변수를
선언하기가 힘드네요...
Header 를 보면
----------------------
LEN : unsigned short
TYPE : unsigned char
SUB : unsigned char
Data
----------------------
data1 : unsigned long
data2 : char[12]
header 를 알아온다음에 Header의 LEN 를 읽어서 Data 를 잘라옵니다...
예)
procedure....
var
sFile : File of Byte;
sr : Byte;
Len : String;
i : Integer;
iLen : Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(sFile, OpenDialog1.FileName);
Reset(sFile);
end
else
exit ;
for i := 1 to 2 do // 헤더에서 Len 가져옴
begin
Read(sFile, sr);
Len := Len + IntToStr(sr);
end;
iLen := StrToInt(Len);
Read(sFile, sr); // 헤더의 Type
sType := IntToStr(sr) ;
Read(sFile, sr); // 헤더의 Sub
sSub := IntToStr(sr) ;
for i := 1 to iLen do // 헤더 Len 정보로 data 가져옴
begin
Read(sFile,sr);
sRecData := sRecData + IntToStr(sr) ;
end;
Memo1.Lines.Add(sRecData);
문제는) Header는 잘 가져오는데 Data부분은 이상한 값을 가져오네요.
자료가 Unix C 에서 만들어진거라 서로 호환이 되질 않는건지 ???
Unsinged long 을 byte로 1byte씩 잘라서 께져버린건지 ....
Header 부분의 Size 나 Type, Sub 정보들의 값은 Byte로 잘라서 보면
제대로 보입니다..하지만 Data 부분의 값은 아무리 계산해봐도 얼뚱한
값들을 가져오네요??
"0x3e0c1a5fTEST_CLK1E... " 이런 값이 들어가 있는데
불러와 보면 "62122695621229212169...." 아주 엉뚱한 값들이 나옵니다.
unix에서 만들어진거라 앞뒤로 byte 순서가 바뀌는 문제도 생각해
봤는데 Header가 잘불러와 지면
그문제는 아닐꺼 같고요....?
부탁드립니다~~~