Ich versuche for in
zu verwenden, um eine TObjectList
iterieren:Wie geht es in 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.
Und es nicht kompilieren:
[DCC32 Error] Project1.dpr (15): Inkompatible Typen E2010: 'TObject' und ‚Pointer‘
Es scheint, als ob Delphi for in
Konstrukt behandelt nicht die untypisierten, undescended, TObjectList
ein als zählbare Ziel.
Wie liste ich die Objekte in einem TObjectList
auf?
Was ich jetzt tun
Mein aktueller Code ist:
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;
für keinen guten Grund, ich hatte gehofft, es zu ändern:
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;
Warum einen Enumerator verwenden? Gerechte Sache.
Verwenden Sie generische 'TObjectList' anstelle von 'TObjectList'. –
whosrdaddy
Beispiel auf die harte Tour: [Unterstützung für In-Schleife in TObjectList-Nachkommen] (http://www.remkoweijnen.nl/blog/2008/03/02/supporting-for-in-loop-in-tobjectlist-descendants/). –
Ich habe dieses Problem im Jahr 2005 als [Bug 10790] (http://qc.embarcadero.com/wc/qcmain.aspx?d=10790) gemeldet. Im Jahr 2011 wurde es "auf die nächste Version verschoben". –