123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- program DebugUtils;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils,
- Quick.Commons,
- Quick.Console,
- Quick.Debug.Utils;
- type
- TCalculator = class
- public
- function Sum(a, b : Int64) : Int64;
- function Subs(a, b: Int64): Int64;
- function Mult(a, b : Int64) : Int64;
- function Divide(a, b: Int64): Double;
- end;
- var
- num : Int64;
- float : Double;
- calculator : TCalculator;
- { TCalculator }
- function TCalculator.Sum(a, b: Int64): Int64;
- begin
- {$IFDEF DEBUG}
- TDebugger.TimeIt(Self,'Sum',Format('Sum %d + %d',[a,b]));
- {$ENDIF}
- Result := a + b;
- //simulate working for 150ms
- Sleep(150);
- end;
- function TCalculator.Subs(a, b: Int64): Int64;
- begin
- {$IFDEF DEBUG}
- TDebugger.Trace(Self,Format('Substract %d - %d',[a,b]));
- {$ENDIF}
- Result := a - b;
- //simulate working for 200ms
- Sleep(200);
- end;
- function TCalculator.Mult(a, b: Int64): Int64;
- begin
- {$IFDEF DEBUG}
- TDebugger.Enter(Self,'Mult').TimeIt;
- {$ENDIF}
- Result := a * b;
- //simulate working for 300ms
- Sleep(300);
- end;
- function TCalculator.Divide(a, b: Int64): Double;
- begin
- {$IFDEF DEBUG}
- var crono := TDebugger.TimeIt(Self,'Divide',Format('Divide %d / %d',[a,b]));
- {$ENDIF}
- Result := a / b;
- //simulate working for 500ms
- Sleep(500);
- {$IFDEF DEBUG}
- crono.BreakPoint('First point');
- {$ENDIF}
- //simulate working for 1 second
- Sleep(1000);
- {$IFDEF DEBUG}
- crono.BreakPoint('Second point');
- {$ENDIF}
- end;
- begin
- try
- calculator := TCalculator.Create;
- num := calculator.Sum(100,50);
- cout('Total is %d',[num],etInfo);
- num := calculator.Subs(30,12);
- cout('Total is %d',[num],etInfo);
- num := calculator.Mult(20,2);
- cout('Total is %d',[num],etInfo);
- float := calculator.Divide(10,2);
- cout('Total is %f',[float],etInfo);
- cout('Press <ENTER> to Exit',ccYellow);
- ConsoleWaitForEnterKey;
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
|