Repository URL to install this package:
|
Version:
3.2.0 ▾
|
program tenumerators1;
{$ifdef fpc}
{$mode objfpc}{$H+}
{$endif}
{$apptype console}
{$x-}
uses
Classes;
{$ifndef fpc}
type
PtrInt = integer;
{$endif}
{$ifdef fpc}
procedure CheckFPListEnumerator;
var
Item: Pointer;
List: TFPList;
Enumerator: TFPListEnumerator;
i: integer;
begin
// check TFPList enumerator
List := TFPList.Create;
i:=List.Add(Pointer(1));
i:=List.Add(Pointer(2));
i:=List.Add(Pointer(3));
Enumerator := List.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(PtrInt(Item));
end;
Enumerator.Free;
List.Free;
end;
{$endif}
procedure CheckListEnumerator;
var
Item: Pointer;
List: TList;
Enumerator: TListEnumerator;
i: integer;
begin
// check TList enumerator
List := TList.Create;
i:=List.Add(Pointer(1));
i:=List.Add(Pointer(2));
i:=List.Add(Pointer(3));
Enumerator := List.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(PtrInt(Item));
end;
Enumerator.Free;
List.Free;
end;
procedure CheckCollectionEnumerator;
var
Item: TCollectionItem;
Collection: TCollection;
Enumerator: TCollectionEnumerator;
begin
// check TCollection enumerator
Collection := TCollection.Create(TCollectionItem);
item:=Collection.Add;
item:=Collection.Add;
item:=Collection.Add;
Enumerator := Collection.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(PtrInt(Item));
end;
Enumerator.Free;
Collection.Free;
end;
procedure CheckStringsEnumerator;
var
Item: String;
Strings: TStrings;
Enumerator: TStringsEnumerator;
i: integer;
begin
// check TStrings enumerator
Strings := TStringList.Create;
i:=Strings.Add('1');
i:=Strings.Add('2');
i:=Strings.Add('3');
Enumerator := Strings.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(Item);
end;
Enumerator.Free;
Strings.Free;
end;
procedure CheckComponentEnumerator;
var
Item: TComponent;
Component: TComponent;
Enumerator: TComponentEnumerator;
begin
// check TComponent enumerator
Component := TComponent.Create(nil);
item:=TComponent.Create(Component);
item:=TComponent.Create(Component);
item:=TComponent.Create(Component);
Enumerator := Component.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(PtrInt(Item));
end;
Enumerator.Free;
Component.Free;
end;
procedure CheckInterfaceListEnumerator;
var
Item: IUnknown;
List: TInterfaceList;
Enumerator: TInterfaceListEnumerator;
i: integer;
begin
// check TInterfaceList enumerator
List := TInterfaceList.Create;
Item := TInterfacedObject.Create;
i:=List.Add(Item);
Item := TInterfacedObject.Create;
i:=List.Add(Item);
Item := TInterfacedObject.Create;
i:=List.Add(Item);
Enumerator := List.GetEnumerator;
while Enumerator.MoveNext do
begin
Item := Enumerator.Current;
WriteLn(PtrInt(Item));
end;
Enumerator.Free;
Item := nil;
List.Free;
end;
begin
{$ifdef fpc}
WriteLn('Testing FPC');
CheckFPListEnumerator;
{$else}
WriteLn('Testing Delphi');
{$endif}
CheckListEnumerator;
CheckCollectionEnumerator;
CheckStringsEnumerator;
CheckComponentEnumerator;
CheckInterfaceListEnumerator;
end.