如何将一个记录类型转换成Variant类型.
这是在Com的连接点的时候出现的问题。在D5中在类型库中声明的记录类型的参数
当把把类型库作为事件源的时候产生的代码为Variant我应该如何转换呢?
TARec=record
a:widestring;
b:widestring;
c:widestring;
end
这样的一个变量ARec如何转换成Variant呢?
这是在Com的连接点的时候出现的问题。在D5中在类型库中声明的记录类型的参数
当把把类型库作为事件源的时候产生的代码为Variant我应该如何转换呢?
TARec=record
a:widestring;
b:widestring;
c:widestring;
end
这样的一个变量ARec如何转换成Variant呢?
解决方案 »
- 怎么在控件的父类添加一个属性呢?
- 使用控件删除EXCEL某一行,如何做?
- 本人一直在使用delphi6,现想了解下delphi.net,请大家介绍一两本书来看看吧
- 这是什么原因??
- 如何得到按钮的实际位置?
- delphi6 or 7 怎样安装rxlib控件包
- 在DELPHI中怎么样调试MTS\COM+服务器端的组件?
- 急,,在线等待,,,小问题,,Socket.SendBuf/Socket.ReceiveBuf一次最大能发送/接收多少字
- 本人想在局域网内做一只电影的VOD点播系统了,用这DELPHI来写的,进来讨论讨论
- 關于delphi6的ActionMainMenuBar组件和ActionToolBar组件 的菜鳥級問題??
- 请大虾能不能比较一下用汇编和delphi编写游戏菜单的区别,要注意的方面?
- 那里有适合Delphi7.0的fastreport报表控件下载?????
a:variant;
b:variant;
c:variant;
end;
TARec:=TVar;
v:Variant;
我要用v来表示ARec
a:Integer;
b:Integer;
end;
TYourVarData = packed record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
VComplex: TYourRecord;
Reserved4: LongInt;
end;var
d:TYourVarData;
v:Variant; v:=Variant(d);
a:widestring;
b:widestring;
c:widestring;
end
// TARec ---> Variant
function RecordToVariant(value:TARec):OleVariant;
var
P:Pointer;
begin
Result := VarArrayCreate([0,sizeof(TARec)],varByte);
P := VarArrayLock(Result);
Move(value,P^,sizeof(P));
VarArrayUnlock(Result);
end;
// OleVariant ----> TARec
function VariantToRecord(value:OleVariant):TARec;
var
P:Pointer;
begin
P:= VarArrayLock(value);
Move(P^,Result,sizeof(TARec));
VarArrayUnlock(value);
end;
用 dolphin2001(抢包山) 的办法即可,不过TARec必须是ShortString类型
TARec=record
a:ShortString;
b:ShortString;
c:ShortString;
end