delphi初学,遇到以下问题:首先从网上当下来一个文件,存到了OleVariant变量里,是利用一个微软的控件。然后保存成文件,应该是一个二进制文件,我这么写,但是文件只有16个字节。
Res为保存了文件的OleVariant变量FileHandle := FileCreate(filename);
FileWrite(FileHandle, Res, SizeOf(Res));
FileClose(FileHandle);
OleVariant变量的内容绝对没问题,因为如果是文本文件的话,用以下语句可以正确的保存
Assignfile(BTxt,filename);
Rewrite(BTxt);
Write(BTxt,Res);
CloseFile(BTxt);

解决方案 »

  1.   

    OLEVARIANT只是一个HANDLE
    并不是真正的文件内容
    它是固定16字节大小的一个特别的HANDLE
      

  2.   

    OleVariant本身就只是一个16字节的单元,一般存储了一个指针/说明等,指针所指的内容/以及内容的意义是程序一般不知道的,只有ole服务器知道, 而你直接将olevariant存储,只是存储了16字节中的内容,所以这样,你应该调用ole服务器的save的接口。
      

  3.   

    不知道你用的什么东西ole,怎么帮你写?你应该查该控件的sdk
    Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105
      

  4.   

    不知道你用的什么东西ole,怎么帮你写?你应该查该控件的sdk
      

  5.   

    该控件是MSInet,没有保存成一个文件的方法,只提供将远程文件存入本地OleVariant变量的方法。
    所以我认为,从OleVariant变量应该是可以写入到一个二进制文件的。
    就像写文本文件一样,有一句关键的Write(BTxt,Res);,读了出来,二进制操作应该也有相应的函数吧。
      

  6.   

    这个说来这个olevariant应该是一个olestream了
    你从这个下手
    查一下帮助 
    看看能不能把 olesteam的内容搞成olevariant的
    然后就可以写成文件了