【发布时间】:2012-01-18 15:03:51
【问题描述】:
可能重复:
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) 这样的函数吗?
我只是想知道这是否可能。我不是在寻找一个 总结为什么 WITH 语句是坏的或好的。还有其他 StackOver flow 上的帖子与该讨论。*
【问题讨论】:
-
+1 对于有趣的问题,尽管我怀疑没有办法干净/清晰地做到这一点,如果有的话。如果解决方案被证明是某种巫术,会让下一个人不得不去看看你是怎么做到的,那么你不应该这样做。
-
同样的问题reference-object-instance-created-using-with-in-delphi,Alexander 提供了解决方案。
-
只需使用一个局部变量并取出 WITH 即可。如果你去做一些邪恶的黑客行为,只是为了把 WITH 保留在那里,那么我将不得不追踪你,并让你喘不过气来。
标签: delphi