我有下面的代码,它引发了一个EConvertError - "can‘t TAdoConnection to TAdoConnection“
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的引用。我想要我自己的对象,这样我就可以释放它,而不需要释放引用。逻辑很复杂,我需要一些机制来从该引用创建一个对象。
发布于 2010-10-27 14:30:35
根据答案(特别是jachguate),我通过分配连接字符串来解析它。代码如下
Result.ConnectionString:=wTmpADOConn.ConnectionString;
Result.LoginPrompt:=wTmpADOConn.LoginPrompt;
Result.Name:=wTmpADOConn.Name;所有答案均为+1。谢谢
诚挚的问候,
发布于 2010-10-26 00:00:50
您不能将TADOConnection赋值给TADOConnection,因为TADOConnection类中没有实现这样的赋值。这很常见--很多类都没有实现Assign方法,而且你也不能期望任何TPersistent的后代都会实现Assign方法--通常不需要这样做。
发布于 2010-10-25 23:45:18
wTmpADOConn引用从何而来?如果它来自不同的可执行模块(dll),并且没有使用包,则wTmpADOConn和Result的类型将不匹配。
https://stackoverflow.com/questions/4016009
复制相似问题