如何在中间层把图象作为参数传递,如何定义这个参数类型?(200分)

  • 主题发起人 主题发起人 hbzh1014
  • 开始时间 开始时间
H

hbzh1014

Unregistered / Unconfirmed
GUEST, unregistred user!
我的初步设想是这样的:把图象流转换成OLEVARIANT,作为参数传入中间层,
在中间层VARIANT换成流型。却不知如何转换?
或是有别的方法?
 
创建一个VARIANT字节数组,如:
var
ImgBuff: OleVairant;
begin
ImgBuff := VarArrayCreate([0, ImgSize - 1], varByte);

然后将图象一个一个的字节赋给imgBuff的每个成员,
最后将imgBuff传给中间层,中间层再把数组中的每
个BYTE读出来,写入到一个TMemoryStrem中,就还原
成图象了
 
谢谢你!但我按你的方法,在调用TStream的Read方法后,ImgBuff作为Read的参数。总是会出现
“Invalid Variant Operation”的错误,是不是OleVariant类型不能这样操作,或者是其它原因?
 
先将图形转换成string然后就可以作为variant类型数据传送了,delphi有这样的函数,
开发webservice时经常有这样的要求。函数名……忘了,李维的书delphi6中有例子
 
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);
...
 
最好用IPicture 或IPictureDisp 来包装你的图像。然后就直接可以在COM之间传递了
很简单的
 
yeskert1,能否查查是什麼函數,我也用到.
 
多人接受答案了。
 
后退
顶部