TFileStream.write(const buffer,count:int64)请问一下buffer是什么类型呢,我试过下面的代码,感觉有点莫名其妙:var i:integer
begin
  i:=$AABBCCDD;
  FileStream.write(i,4); //用Ultra Edit查看到文件里保存的是 DD CC BB AA ,为什么不是AA BB CC DD呢?
end;var str:String;
begin
  str:='0123456789';
  FileStream.write(str,length(str)); //同样用Ultra Edit查看文件,看到的是一串跟'0123456789'毫无关系的数据(或许是我太笨看不出有什么关系),怎么不是'0123456789'呢
end;var str:string; p: array [1..10] of Char; i:integer;
begin
  str:='0123456789';
  for i:=1 to 10 do
    p[i]:=str[i];
  FileStream.write(p,10); //查看文件看到里面保存的是'0123456789'
end;type ArrayChar = Array of Char;
var str:String; p:ArrayChar; 
begin
  str:='0123456789';
  p:=ArrayChar(str);
  FileStream.write(p,length(p)); //同样用Ultra Edit查看文件,查看到的数据跟第二个例子一模一样
end;

解决方案 »

  1.   

    用Pointer
    不是Write(p,..
    是Write(p^,..
    P和P^差别可大了,呵呵
      

  2.   

    To ly_liuyang(LiuYang):可是这段代码能正常保存数据:var str:string; p: array [1..10] of Char; i:integer;
    begin
      str:='0123456789';
      for i:=1 to 10 do
        p[i]:=str[i];
      FileStream.write(p,10); //查看文件看到里面保存的是'0123456789'
    end;这里的p就是Pointer啊,但我没有用FileStream.write(p^,10); ,而是直接用FileStream.write(p,10); 。
      

  3.   

    const buffer什么基本类型都可以,
      

  4.   

    对于整数,在计算机中存储的是高位在高地址,低位在低地址
    你如果过看过汇编就应该知道了
    字符串,每个char是一个字节,按顺序存储,