H hbzh1014 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-06 #1 我的初步设想是这样的:把图象流转换成OLEVARIANT,作为参数传入中间层, 在中间层VARIANT换成流型。却不知如何转换? 或是有别的方法?
宋 宋海涛 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-07 #2 创建一个VARIANT字节数组,如: var ImgBuff: OleVairant; begin ImgBuff := VarArrayCreate([0, ImgSize - 1], varByte); 然后将图象一个一个的字节赋给imgBuff的每个成员, 最后将imgBuff传给中间层,中间层再把数组中的每 个BYTE读出来,写入到一个TMemoryStrem中,就还原 成图象了
创建一个VARIANT字节数组,如: var ImgBuff: OleVairant; begin ImgBuff := VarArrayCreate([0, ImgSize - 1], varByte); 然后将图象一个一个的字节赋给imgBuff的每个成员, 最后将imgBuff传给中间层,中间层再把数组中的每 个BYTE读出来,写入到一个TMemoryStrem中,就还原 成图象了
H hbzh1014 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-09 #3 谢谢你!但我按你的方法,在调用TStream的Read方法后,ImgBuff作为Read的参数。总是会出现 “Invalid Variant Operation”的错误,是不是OleVariant类型不能这样操作,或者是其它原因?
谢谢你!但我按你的方法,在调用TStream的Read方法后,ImgBuff作为Read的参数。总是会出现 “Invalid Variant Operation”的错误,是不是OleVariant类型不能这样操作,或者是其它原因?
Y yeskert1 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-09 #4 先将图形转换成string然后就可以作为variant类型数据传送了,delphi有这样的函数, 开发webservice时经常有这样的要求。函数名……忘了,李维的书delphi6中有例子
P Pearl. Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-09 #5 stream --> variant var stm: TMemoryStream; v: Variant; p: PChar; begin .... v := VarArrayCreate([0, stm.size-1], varByte); p := VarArrayLock(v); stm.readbuffer(p^, stm.size); VarArrayUnlock(v); ... end; variant --> stream ... b := VarArrayLowBound(v); e := VarArrayHighBound(v); p := VarArrayLock(v); Stm.Writebuffer(p^, e - b + 1); VarArrayUnlock(v); stm.seek(0,0); ...
stream --> variant var stm: TMemoryStream; v: Variant; p: PChar; begin .... v := VarArrayCreate([0, stm.size-1], varByte); p := VarArrayLock(v); stm.readbuffer(p^, stm.size); VarArrayUnlock(v); ... end; variant --> stream ... b := VarArrayLowBound(v); e := VarArrayHighBound(v); p := VarArrayLock(v); Stm.Writebuffer(p^, e - b + 1); VarArrayUnlock(v); stm.seek(0,0); ...
H hyz1980 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-17 #6 最好用IPicture 或IPictureDisp 来包装你的图像。然后就直接可以在COM之间传递了 很简单的