3230 3130 3030 00FF     |   201000..
FFFF A700 0000 2600     |   ..&.....
B703 FFFF FFFF FFFF     |   ........
FFFF FFFF FFFF FFFF     |   ........
FFFF FFFF FFFF FFFF     |   ........该段内存我存放在sHead中,代码如下
....
sHead:PChar;
i,j:integer;
s:string;
begin
    hFile:=FileOpen(filename,fmOpenRead);
    FileRead(hFile,sHead^,20);
    ...
end;
我希望得到的结果是s为'201000',i为167,即A700 0000这个整数,而j为62324774,即2600 B703 这个整数。该怎么做啊,盼高手指点!

解决方案 »

  1.   

    定义一个相同内存结构的record结构,现在的问题是内存没有对齐。
      

  2.   

    我用record试了一下,好像有位偏移的问题(vc里有个选项好像可以处理8字节对齐的问题,delphi不知道是什么参数)
    type THead = record
       r_Code          :array[1..9] of char;
       r_Blocks             :longint;                       //数据块总数
       r_BlockAddresses     :array[1..13] of smallint;       //每个数据块的起始地址
    end;
    ......
    FileRead(hFile,mHead,40);
    ......
    r_Code为{201000 ..} 
    r_Blocks为0
    rBlockAddresses的结果是{951,-1,-1,-1,-1,-1,-1,,-1,-1,-1,876}
    876是下一个块的开始。
      

  3.   

    把type THead = record改成type THead = packed record就好了。呵呵