tforin6.pp 865 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. program tforin6;
  2. // test Object enumerator implementation
  3. {$mode objfpc}{$H+}
  4. {$APPTYPE CONSOLE}
  5. type
  6. { TMyListEnumerator }
  7. TMyListEnumerator = object
  8. private
  9. FCurrent: Integer;
  10. public
  11. constructor Create;
  12. destructor Destroy;
  13. function MoveNext: Boolean;
  14. property Current: Integer read FCurrent;
  15. end;
  16. TMyList = class
  17. end;
  18. { TMyListEnumerator }
  19. constructor TMyListEnumerator.Create;
  20. begin
  21. WriteLn('create');
  22. FCurrent := 0;
  23. end;
  24. destructor TMyListEnumerator.Destroy;
  25. begin
  26. WriteLn('destroy');
  27. inherited;
  28. end;
  29. function TMyListEnumerator.MoveNext: Boolean;
  30. begin
  31. inc(FCurrent);
  32. Result := FCurrent <= 3;
  33. end;
  34. operator enumerator (AList: TMyList): TMyListEnumerator;
  35. begin
  36. Result.Create;
  37. end;
  38. var
  39. List: TMyList;
  40. i: integer;
  41. begin
  42. List := TMyList.Create;
  43. for i in List do
  44. WriteLn(i);
  45. List.Free;
  46. end.