to Jims:
又见面了!
<font color="gray">>使用OleContainer并用OleContainer.LoadFromStream()操作后,如何
>在下一次读写操作时将OleContainer区域内的内容清除?</font>
我的做法是:<b>不清除</b>,直接用Ole.LoadFromStream( OleStream );
用过一次又一次了,现在好像还没发生过什么意外.
<font color="gray">>在使用OleContainer.LoadFromStream(xxx)时,如何能够确定xxx流是否
>为空(Null)? (当使用 .SaveToStream(xxx)且xxx为空,则在使用 .LoadFromStream(xxx)
>时,D3将给出出错信息)</font>
用Size或者Position.
我这里,Create后,TMemoryStream的size和position都是0.
读完一个对象后,size和position都为该对象的长度.实际上,position是指向
TMemoryStream的末尾的.判断一个TMemoryStream是否读入东东,可以用Position
来处理.如果position与上次的不一样,就是读进了东西.
一般来说,Ole的东东都是很大的,这样读完以后,<b>position及size的值都不会太小</b>
我这里最小的值都是20K左右.根据这一点应该可以排除TMemoryStream的内部头信息
等因素.
<font color="gray">>如上OleContainer1.DestroyObject确能将OLE内的内容清掉,但我再次激活
>它时,系统则报错:不能对空的OLEContainer1进行操作,估计DestroyObject
>是将释放Ole对象来达到清空的目的,除此发外,是否还有其它的方法,如用TRead、
>TWrite类的方法?再一,DestroyObject后,如何再将OleContainer1激活,操作
>过程如何?</font>
1.我总是觉得,<b>没必要把ole内的内容消掉</b>,因为任何时候,用户都不要看一个灰灰的OleContainer
而用Ole.CreateObject( 'Word.Document.8', false )和Ole.LoadFromStream( OleStream )
可以轻松地不用管以前的内容,进行新建文件和编辑文件.
2.对于已经Destroy的OleContainer,它的里面<b>已经不存在实际意义上的文档</b>,自然激活它也就没有
什么意义了.当您需要对其进行编辑,插入时,必须<b>再新建或者插入一个文档</b>,然后才好激活它
4.对于您的要求,我的做法是:
用<b>Ole.CreateObject( 'Word.Document.8', false )</b>和<b>Ole.LoadFromStream( OleStream )</b>
使OleContainer内有文档对象,然后激活则不成问题.
btw: Jims啊,您的另外几个问题有解决吗?还是我答得不清楚?如果您认为那些问题
还没有得到解决,可以在后面加上您的几句话,把它们推到待答问题的前面来,
大家一起来解决.
不好意思,这一段很忙,就算上了大富翁也只是看一看,没有时间来考虑问题.