首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >delphi adoconnection经济转换错误

delphi adoconnection经济转换错误
EN

Stack Overflow用户
提问于 2010-10-25 23:17:37
回答 4查看 1K关注 0票数 2

我有下面的代码,它引发了一个EConvertError - "can‘t TAdoConnection to TAdoConnection“

代码语言:javascript
复制
var
  wTmpADOConn       : TADOConnection;
begin
  //
  Result := nil;
  try
    Result := TADOConnection.Create(nil);
    wTmpADOConn := afunc(aNameConn);//aFunc-Function which returns a pointer to a  TADOConnection object, aNameConn - string- the name of connection
    if wTmpADOConn <> nil then
    begin
      Result.Assign(wTmpADOConn);//here the error is raising

我不明白我做错了什么。我曾尝试将变量wTmpADOConn强制转换为TAdoConnection或TPersistent,但没有成功。

我知道要复制一个对象,可以使用赋值过程。

代码是用Delphi7编写的。

LE:谢谢大家,问题是这个对象是一个共享对象,是对另一个ADOConnection的引用。我想要我自己的对象,这样我就可以释放它,而不需要释放引用。逻辑很复杂,我需要一些机制来从该引用创建一个对象。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-27 14:30:35

根据答案(特别是jachguate),我通过分配连接字符串来解析它。代码如下

代码语言:javascript
复制
  Result.ConnectionString:=wTmpADOConn.ConnectionString;
  Result.LoginPrompt:=wTmpADOConn.LoginPrompt;
  Result.Name:=wTmpADOConn.Name;

所有答案均为+1。谢谢

诚挚的问候,

票数 0
EN

Stack Overflow用户

发布于 2010-10-26 00:00:50

您不能将TADOConnection赋值给TADOConnection,因为TADOConnection类中没有实现这样的赋值。这很常见--很多类都没有实现Assign方法,而且你也不能期望任何TPersistent的后代都会实现Assign方法--通常不需要这样做。

票数 2
EN

Stack Overflow用户

发布于 2010-10-25 23:45:18

wTmpADOConn引用从何而来?如果它来自不同的可执行模块(dll),并且没有使用包,则wTmpADOConn和Result的类型将不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4016009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档