是不是判断某个变量的类型判断是否用啊?function BlobContentToString(const FileName:string):string;with TFileStream.create(FileName,fmOpenRead) do
  Read(Pointer(Result)^, size);这里为什么要把一个function的返回结果变成指针类型的啊还是因为Result是一个指针类型的字符串啊?指教!

解决方案 »

  1.   

    Pointer(Result)^是取Result的地址,
    然后Read(Pointer(Result)^, size)就真接读出文件中的内容到Result这个缓冲区中。
      

  2.   

    哦,谢谢,明白了,那这样呢Read(Result, size);又是什么意思啊?
      

  3.   

    我开始没看清楚,说错了,Pointer(Result)^是指取得Pointer(Result)处指向的数据。
      

  4.   

    其实这样写
       Read(Result[1], size);
    就好理解一点
      

  5.   

    在这里直接用:
    Read(Result[1], size);
    是不对的。尽管读写字符串时可以用Read/Write(S[1],……);
    原因是此时Result='',Result[1]要抛出地址读异常—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  6.   

    Read(Result, size);看帮助吧
    F1
      

  7.   

    SetLength(Result,size);
    Read(Result[1], size);
      

  8.   

    Read(Result, size);是错误的,读写字符串时如果直接操作,必须使用S[1]—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  9.   

    S[1]是指定读写的起始位置,而不是指定为一个字符。读写多少字节有后面的Count决定—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  10.   

    Read(var Buffer; Count);
    read(S[1],size);s[1]在这里表示S指向的字符串的首地址
      

  11.   

    看一下Read(var Buffer; Count);Buffer定义成var
      

  12.   

    a := TFileStream.Create('d:\a.txt', fmOpenRead);
    showmessage(inttostr(a.Read(s[1], 10)));
    a.Free;
    showmessage(s);怎么显示0和‘’呢?没读进去呀。