var
  ms: tmemorystream;
begin
  ms:= TmemoryStream.Create();
  ms.LoadFromFile('c:\213.xls');
  ms.Position:= 0;
  oleContainer1.LoadFromStream(ms);
end;提示 invalid stream format察看发现ms的大小为0。清高手指教,谢谢!!!

解决方案 »

  1.   

    oleContainer1直接打开'c:\213.xls'不行么
      

  2.   

    也不行,同样的错误,怪怪的问题,我在WinXp下写的。到别人的机子上也不行,前几天我还可以用olecontainer1.loadfromfile打开文件的,后来机子有病毒,在2000Server下杀不了,就只好装了个XP,不知道是不是这个原因?
      

  3.   

    OleContainer1的LoadFromStream是用来加载它的SaveToStream保存的流文件的,而不是用来加载TMemoryStream这样的类型的流文件的!因为它们格式不一样。如果你一定要用TMemoryStream,那么你必须把TMemoryStream的流格式转换为OleContainer1认识的文件流格式
      

  4.   

    可是我用TMemoryStream.loadfromfile读取文件后大小也不应该为0阿,还有olecontainer.loadformfile为什么会出错?请大侠们不吝赐教阿
      

  5.   

    var
      MemoryStream: TMemoryStream;
    begin
      MemoryStream := TMemoryStream.Create;
      MemoryStream.LoadFromFile('C:\ICONPRO.ICO');
      Caption := IntToStr(MemoryStream.Size);      <--Size不是0,是实际的文件的大小
      Caption := IntToStr(MemoryStream.Position);  <--默认的Position为0,无须设置
      MemoryStream.Free;
    end;我试过了,没有问题,你在试试看。
      

  6.   

    问题解决了,主要是我用错了函数
    应该是:
    1 tolecontainer.createobjectfromfile
    2 tolecontainer.savetostream(memorystream)
    3 Tblobstream.loadformstream(memorystream)
    4 post我用了tolecontainer.loadfromfile当然要出错了,哈哈!谢谢各位的关注,谢谢jacky_shen(jacky)兄的代码。