fork download
  1. program SimpleFPCOOP;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6. Classes, fgl;
  7. type
  8. generic TList<T> = class
  9. Items: array of T;
  10. procedure Add(Value: T);
  11. function Get(i: integer): T;
  12. function GetLength: integer;
  13. end;
  14.  
  15. TIntegerList = specialize TList<integer>;
  16.  
  17. procedure TList.Add(Value: T);
  18. begin
  19. SetLength(Items, Length(Items) + 1);
  20. Items[Length(Items) - 1] := Value;
  21. end;
  22.  
  23. function Tlist.Get(i: integer): T;
  24. begin
  25. result := Items[i];
  26. end;
  27.  
  28. function Tlist.GetLength: integer;
  29. begin
  30. result := Length(Items);
  31. end;
  32.  
  33. type
  34. TSelbst = class(TObject)
  35. private
  36. fWert : integer;
  37. fWerte: TIntegerList;
  38. public
  39. constructor Create(w: integer);
  40. function GetWert: integer;
  41. procedure AddWert(w: integer);
  42. end;
  43.  
  44. constructor TSelbst.Create(w: integer);
  45. begin
  46. fWert := w;
  47. fWerte := TIntegerList.Create;
  48. fWerte.Add(w);
  49. end;
  50. procedure TSelbst.AddWert(w: integer);
  51. begin
  52. fWerte.Add(w);
  53. end;
  54.  
  55. function TSelbst.GetWert: integer;
  56. begin
  57. result := fWerte.Get(fWerte.GetLength - 1);
  58. end;
  59. var
  60. fremd: TSelbst;
  61.  
  62. begin
  63. fremd := TSelbst.Create(7);
  64. WriteLn(fremd.GetWert);
  65. fremd.AddWert(27);
  66. WriteLn(fremd.GetWert);
  67. ReadLn;
  68. end.
  69.  
Success #stdin #stdout 0s 5276KB
stdin
Standard input is empty
stdout
7
27