如何在使用OleVariant的方法中发送字节数组?
这是方法:
procedure Import(bInitialize: Integer; nFingerID: Integer; nPurpose: Integer;
nSrcFPDataType: Integer; nFPDataSize: Integer; FPData1: OleVariant; FPData2: OleVariant); safecall;
我们试图这样使用:
buftn: array[0..399] of byte;
// fill the buftn array... then
objFPData.Import(1,1,1,400,400,OleVariant(buftn));
但是它返回消息:“无效类型转换”
答案 0 :(得分:1)
您不能在buftn
内传递OleVariant
字节数组本身。那与OLE不兼容,这就是为什么您遇到转换错误。
您必须在OleVariant
内分配一个与OLE兼容的字节数组,然后可以将字节复制到其中,例如:
uses
..., Variants;
var
buftn: array[0..399] of Byte;
v: Variant;
begin
// fill the buftn array...
v := VarArrayCreate([Low(buftn), High(buftn)], varByte);
Move(buftn, VarArrayLock(v)^, sizeof(buftn));
VarArrayUnlock(v);
objFPData.Import(1,1,1,400,400,v);
end;
或者:
uses
..., Variants;
var
buftn: PByte;
v: Variant;
begin
v := VarArrayCreate([0, 399], varByte);
buftn := PByte(VarArrayLock(v));
// fill the buftn array...
VarArrayUnlock(v);
objFPData.Import(1,1,1,400,400,v);
end;