有没有办法在""中引用dinamicaly创建的对象?段,让我们说在其他地方传递这个对象?
我有一个像这样的简单代码
var
someObject: TSomeObject;
begin
someObject := TSomeObject.Create;
try
someObject.someProperty := 1;
SomeOtherProcedure(someObject);
finally
someObject.Free;
end;
end;
有一个传递给SomeOtherProcedure的变量。现在我试图删除someObject变量并使用"和#34;段有这样的东西
begin
with TSomeObject.Create do
try
someProperty := 1
SomeOtherProcedure( < what goes here ?? > );
finally
Free;
end;
end;
我不想拥有像
这样的东西var
someObject: TSomeObject;
begin
someObject := TSomeObject.Create;
with someObject do
(...)
这甚至可以引用正在&#34中创建的对象;使用&#34;?
谢谢!
答案 0 :(得分:2)
不能不能使用With
语句(特别是在你所说的情况下),因为它可能会导致比解决的问题更多的问题。
请考虑以下代码: -
Procedure TMyForm1.btnProcessClick(Sender : TObject);
Begin
With TMyForm2.Create(Nil) Do
Begin
Try
Caption := 'Processing....';
DoSomeProcessing;
DoSomeMoreProcessing;
Finally
Free;
End;
End;
End;
假设TMyForm1
还有一个名为DoSomeProcessing
的方法?哪一个会被调用?哪个表单标题会更改为说'处理...&#39 ;?它不会立即清楚将被调用的方法。当您开始引用属性时,情况会变得更加复杂。不要期望调试器能够帮助您。现在,当代码仍然新鲜时,所有这些都可能不会给你带来太多问题,但是6个月或一年之后呢?你已经给自己带来了一大堆悲伤,以节省一些打字。