methcall.pp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. { Method Calls }
  2. program methcall;
  3. uses SysUtils;
  4. type TToggle = class
  5. private
  6. value : boolean;
  7. public
  8. property Bool : boolean read value write value;
  9. procedure Activate;
  10. end;
  11. type TNthToggle = class
  12. constructor Create;
  13. private
  14. value : boolean;
  15. counter : integer;
  16. cmax : integer;
  17. public
  18. property CountMax : integer read cmax write cmax;
  19. property Bool : boolean read value write value;
  20. procedure Activate;
  21. end;
  22. constructor TNthToggle.Create;
  23. begin
  24. counter := 0;
  25. end;
  26. procedure TToggle.Activate;
  27. begin
  28. if value = True Then
  29. value := False
  30. else
  31. value := True;
  32. end;
  33. procedure TNthToggle.Activate;
  34. begin
  35. counter := counter + 1;
  36. if counter >= cmax Then begin
  37. if value = True Then
  38. value := False
  39. Else
  40. value := True;
  41. counter := 0;
  42. end;
  43. end;
  44. var
  45. NUM, i : longint;
  46. val : boolean;
  47. oToggle : TToggle;
  48. onToggle : TNthToggle;
  49. begin
  50. if ParamCount = 0 then
  51. NUM := 1
  52. else
  53. NUM := StrToInt(ParamStr(1));
  54. if NUM < 1 then NUM := 1;
  55. val := True;
  56. oToggle := TToggle.Create;
  57. oToggle.Bool := val;
  58. For i := 1 to NUM do
  59. begin
  60. oToggle.Activate;
  61. val := oToggle.Bool;
  62. end;
  63. If val = True Then
  64. WriteLn('true')
  65. else
  66. WriteLn('false');
  67. val := True;
  68. onToggle := TNthToggle.Create;
  69. onToggle.Bool := val;
  70. onToggle.CountMax := 3;
  71. For i := 1 to NUM do
  72. begin
  73. onToggle.Activate;
  74. val := onToggle.Bool;
  75. end;
  76. If val = True Then
  77. WriteLn('true')
  78. else
  79. WriteLn('false');
  80. end.