我正在尝试使用for in
迭代 a TObjectList
:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, Contnrs;
var
list: TObjectlist;
o: TObject;
begin
list := TObjectList.Create;
for o in list do
begin
//nothing
end;
end.
它无法编译:
[dcc32 错误] Project1.dpr(15):E2010 不兼容的类型:“TObject”和“Pointer”
似乎 Delphi 的for in
构造不处理无类型的、未降级的、TObjectList
可枚举的目标。
如何枚举 a 中的对象TObjectList
?
我现在应该做什么
我目前的代码是:
procedure TfrmCustomerLocator.OnBatchDataAvailable(BatchList: TObjectList);
var
i: Integer;
o: TObject;
begin
for i := 0 to BatchList.Count-1 do
begin
o := BatchList.Items[i];
//...snip...where we do something with (o as TCustomer)
end;
end;
没有充分的理由,我希望将其更改为:
procedure TfrmCustomerLocator.OnBatchDataAvailable(BatchList: TObjectList);
var
o: TObject;
begin
for o in BatchList do
begin
//...snip...where we do something with (o as TCustomer)
end;
end;
为什么要使用枚举器?只因。