stream1:TMemoryStream;
buffer:array of char;
content:array[0..160] of char;
程序中
stream1.LoadFromFile('untitled01_0.otb');
stream1.WriteBuffer(buffer,140);
for i:=0 to 139 do
    content[i]:=buffer[i];
但是writebuffer出错!
出现错误access violation address 6c437075 。read of  address 6c437075
如果不是这样做请明示,我再试试!!

解决方案 »

  1.   

    stream1.LoadFromFile('untitled01_0.otb');
    SetLength(buffer,140);
    Stream1.Position := 0;
    stream1.WriteBuffer(buffer,140);
      

  2.   

    buffer是动态数据,要首先设置长度。
    stream1.LoadFromFile('untitled01_0.otb');
    setlength(buffer,150);
    stream1.WriteBuffer(buffer,140);
    for i:=0 to 139 do
        content[i]:=buffer[i];
      

  3.   

    哦,好的谢谢你哦!
    我也在试
    前面加了
    stream.create;
    后面加了
    stream.free;
    还是不行
      

  4.   

    stream1.LoadFromFile('untitled01_0.otb');
    stream1.WriteBuffer(buffer,140);
    for i:=0 to 139 do
        content[i]:=buffer[i];
    最上面加这么两句试试看
    stream1:=TmemoryStream.Create;
    stream1.SetSize:=140;
      

  5.   

    xdf_hubei(残月) 说的对,加一句stream1.SetSize(140)就可以了
      

  6.   

    不过看你的题目意思应该是这样:有一个文件 'untitled01_0.otb',你想把它读到一个书组里面,如果是这样,我的处理方法是(借助你的思想):
    var
      StreamTmp:TmemoryStream;
      ArrayTmp:array[140];
    begin
      StreamTmp:=TMemoryStream.create;
      StreamTmp.setsize:=140;
      StreamTmp.loadfromfile('untitled01_0.otb');
      StreamTmp.read(arrayTmp,sizeof(arrayTmp));
      StreamTmp.Free;
    end;
      

  7.   

    不好意思,我写错了stream1.SetSize:=140;应该是stream1.SetSize(140)
    呵呵
      

  8.   

    通过了,可是里面的内容是空的,真不知道是怎么回事情!另外
    你的程序中应该为
    stream.setsize(140);
    呵呵,还是谢谢你,把分给你,我再看看为什么没有东西!你如果有兴趣可以想一想,那个.otb是个二进制的文件,是个手机图片!
      

  9.   

    stream1:=TMemoryStream.Create;
      stream1.LoadFromFile('e:\mytry.ini');
      stream1.SetSize(140);
      stream1.readBuffer(content,140);
      edit1.text:=content;
      stream1.Free;
    我刚测试没有问题
      

  10.   

    var
      StreamTmp:TmemoryStream;
      ArrayTmp:array[140];
    begin
      StreamTmp:=TMemoryStream.create;
      StreamTmp.setsize(140);
      StreamTmp.loadfromfile('untitled01_0.otb');
      StreamTmp.read(arrayTmp,sizeof(arrayTmp));
      StreamTmp.Free;
    end;你这样读是空的吗?不会吧,那你把那个数组改成 array[140]of byte
    对了,我不明白,为什么长度一定就是140呢?难道那个文件长度是140?
    不过我觉得还可以使用TFileStream直接打开那个文件,然后读取。
    或者使用OpenFile获取那个文件的句柄,然后进行处理