Implemente o FOREACH em DELPHI.NET

Em C# a declaração de foreach repete um grupo de declarações embutidas para cada elemento em uma ordem ou uma coleção de objeto. Delphi for NET não tem um eqivalente da declaração de foreach. Vejamos como codificar uma declaração de foreach em Delphi.

 

Primeiro, aqui é uma amostra simples do foreach no C#:

 

foreach (TMyObject myObject in AnArrayList) { 

  AnIntValue = MyObject.MyValue; 

} 

Where TMyObject class is declared as:  

TMyObject = Class(TObject) 

  public 

    MyField : integer; 

    constructor Create(AValue:integer) ; 

end; 

 

constructor TMyObject.Create(AValue: integer) ; 

begin 

   inherited Create; 

   MyField := AValue; 

end;

 

 

Aqui é o " mesmo código " em Delphi for NET:

 

var 

   MyObject : TMyObject; 

   AnArrayList : ArrayList; 

   Enum: IEnumerator; 

   j:integer; 

begin 

   AnArrayList := ArrayList.Create; 

   AnArrayList.Add(TMyObject.Create(2004)) ; 

   AnArrayList.Add(TMyObject.Create(1973)) ; 

   AnArrayList.Add(TMyObject.Create(2000)) ; 

   AnArrayList.Add(TMyObject.Create(1998)) ; 

 

 

   //FOR EACH 

   Enum := AnArrayList.GetEnumerator; 

   while Enum.MoveNext do  

   begin 

     MyObject := TMyObject(Enum.Current) ; 

     Response.Write(MyObject.MyField.ToString + <br>) ; 

   end; 

 

   // OR USING ITERATION 

   for j:= 0 to -1 + AnArrayList.Count do 

   begin 

     MyObject := TMyObject(AnArrayList[j]) ; 

     Response.Write(MyObject.MyField.ToString + <br>) ; 

   end;