2
0

DebugUtils.dpr 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. program DebugUtils;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5. System.SysUtils,
  6. Quick.Commons,
  7. Quick.Console,
  8. Quick.Debug.Utils;
  9. type
  10. TCalculator = class
  11. public
  12. function Sum(a, b : Int64) : Int64;
  13. function Subs(a, b: Int64): Int64;
  14. function Mult(a, b : Int64) : Int64;
  15. function Divide(a, b: Int64): Double;
  16. end;
  17. var
  18. num : Int64;
  19. float : Double;
  20. calculator : TCalculator;
  21. { TCalculator }
  22. function TCalculator.Sum(a, b: Int64): Int64;
  23. begin
  24. {$IFDEF DEBUG}
  25. TDebugger.TimeIt(Self,'Sum',Format('Sum %d + %d',[a,b]));
  26. {$ENDIF}
  27. Result := a + b;
  28. //simulate working for 150ms
  29. Sleep(150);
  30. end;
  31. function TCalculator.Subs(a, b: Int64): Int64;
  32. begin
  33. {$IFDEF DEBUG}
  34. TDebugger.Trace(Self,Format('Substract %d - %d',[a,b]));
  35. {$ENDIF}
  36. Result := a - b;
  37. //simulate working for 200ms
  38. Sleep(200);
  39. end;
  40. function TCalculator.Mult(a, b: Int64): Int64;
  41. begin
  42. {$IFDEF DEBUG}
  43. TDebugger.Enter(Self,'Mult').TimeIt;
  44. {$ENDIF}
  45. Result := a * b;
  46. //simulate working for 300ms
  47. Sleep(300);
  48. end;
  49. function TCalculator.Divide(a, b: Int64): Double;
  50. begin
  51. {$IFDEF DEBUG}
  52. var crono := TDebugger.TimeIt(Self,'Divide',Format('Divide %d / %d',[a,b]));
  53. {$ENDIF}
  54. Result := a / b;
  55. //simulate working for 500ms
  56. Sleep(500);
  57. {$IFDEF DEBUG}
  58. crono.BreakPoint('First point');
  59. {$ENDIF}
  60. //simulate working for 1 second
  61. Sleep(1000);
  62. {$IFDEF DEBUG}
  63. crono.BreakPoint('Second point');
  64. {$ENDIF}
  65. end;
  66. begin
  67. try
  68. calculator := TCalculator.Create;
  69. num := calculator.Sum(100,50);
  70. cout('Total is %d',[num],etInfo);
  71. num := calculator.Subs(30,12);
  72. cout('Total is %d',[num],etInfo);
  73. num := calculator.Mult(20,2);
  74. cout('Total is %d',[num],etInfo);
  75. float := calculator.Divide(10,2);
  76. cout('Total is %f',[float],etInfo);
  77. cout('Press <ENTER> to Exit',ccYellow);
  78. ConsoleWaitForEnterKey;
  79. except
  80. on E: Exception do
  81. Writeln(E.ClassName, ': ', E.Message);
  82. end;
  83. end.