delphi adoconnection对象传递到dll中的窗体中的adoquery
showForm(adoC:TAdoConnection);varbegintryfrmDLL:=TfrmDLL.Create(Application);frmDLL.A...
showForm(adoC:TAdoConnection);
var
begin
try
frmDLL := TfrmDLL.Create (Application);
frmDLL.ADOQuery1.Connection :=adoC;
frmDLL.showmodal;
finally
FreeAndNil(frmDLL);
end;
end;
可以正常连接但在关闭窗口后出现内存地址错误资源也基本释放了,请指教。如果有更好的方法还请告知一下,谢谢 展开
var
begin
try
frmDLL := TfrmDLL.Create (Application);
frmDLL.ADOQuery1.Connection :=adoC;
frmDLL.showmodal;
finally
FreeAndNil(frmDLL);
end;
end;
可以正常连接但在关闭窗口后出现内存地址错误资源也基本释放了,请指教。如果有更好的方法还请告知一下,谢谢 展开
2个回答
展开全部
procedure DoTest(H: THandle; { 获得调用者的句柄 }
AConn: TADOConnection;{ 获得调用者的数据库连接 }
S: string; { 获得一些文本信息 }
N: Integer); { 获得一些数值信息 }
cdecl; { 指定调用协议 }
procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);
begin
Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会各自出现一个任务标题了。 }
try{ 创建窗体 }
frmDLL := TfrmDLL.Create (application);
// Memo1.Lines.Append('成功调用'); { 显示一行信息 }
frmDLL.ADOQuery1.Connection:= AConn; { 获得数据库连接的实例 }
// Memo1.Lines.Append(
// ADOConnection1.ConnectionString +
// ' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }
frmDLL.ShowModal; { 模式化显示窗体 }
finally
frmDLL.Free; { 调用结束时销毁窗口 }
end;
end;
AConn: TADOConnection;{ 获得调用者的数据库连接 }
S: string; { 获得一些文本信息 }
N: Integer); { 获得一些数值信息 }
cdecl; { 指定调用协议 }
procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);
begin
Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会各自出现一个任务标题了。 }
try{ 创建窗体 }
frmDLL := TfrmDLL.Create (application);
// Memo1.Lines.Append('成功调用'); { 显示一行信息 }
frmDLL.ADOQuery1.Connection:= AConn; { 获得数据库连接的实例 }
// Memo1.Lines.Append(
// ADOConnection1.ConnectionString +
// ' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }
frmDLL.ShowModal; { 模式化显示窗体 }
finally
frmDLL.Free; { 调用结束时销毁窗口 }
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询