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