gpt4 book ai didi

delphi - 如何获取对在WITH 语句中创建的TQuery 对象的引用?

转载 作者:行者123 更新时间:2023-12-03 15:04:16 25 4
gpt4 key购买 nike

Possible Duplicate:
Reference object instance created using “with” in Delphi

我用来在 Delphi 中创建查询对象的一个​​方法遵循第一个代码示例。它为我提供了对该对象的引用,然后我可以将该对象传递给函数。

procedure SomeProcedure;
var
qry: TQuery;
begin
qry := TQuery.Create(nil);

with qry do
begin
Connection := MyConn;
SQL.Text := 'SELECT * FROM PEOPLE';
Open;

funcDisplayDataSet(qry);
Free;
end;

end;

是否也可以在WITH语句中执行此操作,其中您的Create对象包含在WITH语句中?

procedure SomeProcedure;
begin
with TQuery.Create(nil) do
begin
Connection := MyConn;
SQL.Text := 'SELECT * FROM PEOPLE';
Open;

funcDisplayDataSet( ??? ); // Here I'm unsure how to pass the object created...
Free;
end;
end;

我可以将此动态对象传递给像 `funcDisplayDataSet(TQuery) 这样的函数吗?

I just would like to know if this is possible. I'm not looking for a summary on why the WITH statement is bad or good. There are other posts on StackOver flow with that discussion.*

最佳答案

一般来说,这是不可能以干净的方式实现的。您的选择:

  1. 向类添加一个返回 Self 的方法。
  2. 停止使用 with 并为实例创建一个局部变量。

如果您可以控制类(class),则选项 1 是可行的。但这让类(class)看起来很奇怪。为什么类需要一个返回实例的实例方法?如果您无法控制类,那么您可以按照 RRUZ 的建议使用类助手,但我认为使用类助手是最后的手段。我从来没有用类助手解决过问题。

剩下选项 2。这就是我解决问题的方法。

关于delphi - 如何获取对在WITH 语句中创建的TQuery 对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912337/

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