Я пытаюсь использовать for 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.
И не компилируется:
[Ошибка dcc32] Project1.dpr(15): E2010 Несовместимые типы: «TObject» и «Pointer»
Создается впечатление, что конструкция for in
в Delphi не обрабатывает нетипизированное, неопущенное, 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<T>
вместоTObjectList
. - person whosrdaddy   schedule 29.09.2014