gpt4 book ai didi

delphi - 如何将 Variant 转换为 TADOConnection.ConnectionObject?

转载 作者:行者123 更新时间:2023-12-03 18:39:37 24 4
gpt4 key购买 nike

我收到了存储在 Variant 中的 native COM ADOConnection。我想将此连接的接口(interface)传递给 VCL 包装器 TADOConnection。问题是我收到无效的类型转换编译器消息或访问违规。

例如:

procedure AssignNativeConnection(VCLConnection: TADOConnection; var NativeConnection: Variant);
var
VariantManager: TVariantManager;
AInterface: IInterface;
begin
AInterface := VCLConnection.ConnectionObject;
VariantManager.VarToIntf(AInterface, NativeConnection); //oops AV here!
end;

任何想法如何解决这个问题?我正在使用德尔福 2007。

提前致谢。

最佳答案

我已经多次使用变体中的普通 IUnknown 类型转换,然后使用 来完成这项工作。如运算符,很像这样:

VCLConnection.ConnectionObject:=(IUnknown(NativeConnection) as _Connection);

(我注意到 ConnectionObject 属性的类型是 _Connection 并且它是在 ADIOnt 单元中定义的。)
当然,您仍然会在无效指针或零指针或任何对基本接口(interface)调用(QueryInterface 等)没有正确响应的情况下获得 AV

关于delphi - 如何将 Variant 转换为 TADOConnection.ConnectionObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1969953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com