我試圖用for in
迭代一個TObjectList
:如何爲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的'和「指針」
它好像德爾福for in
結構不處理非類型化的,未降,TObjectList
一個作爲枚舉目標。
如何枚舉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;
爲什麼要使用一個枚舉?正因爲。
使用通用'TObjectList的''而不是TObjectList'。 –
whosrdaddy
2014-09-29 15:03:06
實施例做硬的方式:(http://www.remkoweijnen.nl/blog/2008/03/02/supporting-for-in-loop-in-tobjectlist-descendants/ [在循環中TObjectList後代支護] )。 – 2014-09-29 15:34:44
我報道這個問題,因爲[錯誤10790(http://qc.embarcadero.com/wc/qcmain.aspx?d=10790)於2005年在2011年,它被「推遲到下一個版本。」 – 2014-09-29 17:00:43