CB中定义的10个字节的char,到了delphi中却只能用string[9]才能保证位数正确,但是却读到得内容是错的
CB中的定义:
struct AAA
{float a1;
char a2[10],a3[10];
float a4,a5,a6;
}
delphi 中我是这样定义的
TpRec =Packed Record
 a1:Single ;
 a2:string[9];
 a3:string[9];
 a4:Single ;
 a5:Single ;
 a6:Single ;
end;
这样才能保证位数正确,但是a2,a3的内容就不正确了,请各位大哥帮忙,十分急,在线等待,不够分可以再加

解决方案 »

  1.   

    改成这样:
    TpRec =Packed Record
     a1:Single ;
     a2:array[0..9] of char;
     a3:string[0..9] of char;
     a4:Single ;
     a5:Single ;
     a6:Single ;
    end;
      

  2.   

    解释一下,
    Delphi中记录中的string[n]是pascal的短字符串,该串格式为串长+串,因此对于string[9],存入文件时为:$9$?$?....
    读出的时候也是,也就是说,读的时候,它错误的把第一个字符认为是
    该串的串长。
      

  3.   

    十分感谢 zwjchina(蒲石) ,终于搞定,
      

  4.   

    我昨天弄了一天,到晚上3、4点钟,今天终于可以交差了,可以告诉我 zwjchina(蒲石) 你的邮件吗,我想有机会在向你请教问题,我的邮件
    [email protected],再次感谢!!!