log.inc 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. {
  2. Free Pascal port of the OpenPTC C++ library.
  3. Copyright (C) 2001-2003 Nikolay Nikolov ([email protected])
  4. Original C++ version by Glenn Fiedler ([email protected])
  5. This library is free software; you can redistribute it and/or
  6. modify it under the terms of the GNU Lesser General Public
  7. License as published by the Free Software Foundation; either
  8. version 2.1 of the License, or (at your option) any later version.
  9. This library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. Lesser General Public License for more details.
  13. You should have received a copy of the GNU Lesser General Public
  14. License along with this library; if not, write to the Free Software
  15. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. }
  17. {$IFNDEF WinCE}
  18. Const
  19. LOG_filename = 'ptcpas.log';
  20. {$ELSE WinCE}
  21. Function LOG_filename : WideString;
  22. Var
  23. RequiredBufferLength : DWord;
  24. ReturnedPathLength : DWord;
  25. TempPathBuf : PWideChar;
  26. dummy : Byte;
  27. Begin
  28. RequiredBufferLength := GetTempPathW(0, @dummy);
  29. TempPathBuf := GetMem(RequiredBufferLength * SizeOf(WideChar));
  30. Try
  31. ReturnedPathLength := GetTempPathW(RequiredBufferLength, TempPathBuf);
  32. If ReturnedPathLength > RequiredBufferLength Then
  33. Begin
  34. { The temp path length increased between 2 consecutive calls to GetTempPath?! }
  35. Result := '';
  36. Exit;
  37. End;
  38. Result := TempPathBuf;
  39. Result := Result + 'ptcpas.log';
  40. Finally
  41. FreeMem(TempPathBuf);
  42. End;
  43. End;
  44. {$ENDIF WinCE}
  45. Var
  46. LOG_create : Boolean = True;
  47. LOG_enabled : Boolean =
  48. {$IFDEF DEBUG}
  49. True;
  50. {$ELSE DEBUG}
  51. False;
  52. {$ENDIF DEBUG}
  53. LOG_file : Text;
  54. Procedure LOG_open;
  55. Begin
  56. AssignFile(LOG_file, LOG_filename);
  57. If LOG_create Then
  58. Begin
  59. Rewrite(LOG_file);
  60. Writeln(LOG_file, '[log start]');
  61. LOG_create := False;
  62. End
  63. Else
  64. Append(LOG_file);
  65. End;
  66. Procedure LOG_close;
  67. Begin
  68. CloseFile(LOG_file);
  69. End;
  70. Procedure LOG(Const message : String);
  71. Begin
  72. If Not LOG_enabled Then
  73. Exit;
  74. LOG_open;
  75. Writeln(LOG_file, message);
  76. LOG_close;
  77. End;
  78. Procedure LOG(Const message : String; data : Boolean);
  79. Begin
  80. If Not LOG_enabled Then
  81. Exit;
  82. LOG_open;
  83. Write(LOG_file, message, ' = ');
  84. If data Then
  85. Writeln(LOG_file, 'true')
  86. Else
  87. Writeln(LOG_file, 'false');
  88. LOG_close;
  89. End;
  90. Procedure LOG(Const message : String; data : Integer);
  91. Begin
  92. If Not LOG_enabled Then
  93. Exit;
  94. LOG_open;
  95. Writeln(LOG_file, message, ' = ', data);
  96. LOG_close;
  97. End;
  98. Procedure LOG(Const message : String; data : DWord);
  99. Begin
  100. If Not LOG_enabled Then
  101. Exit;
  102. LOG_open;
  103. Writeln(LOG_file, message, ' = ', data);
  104. LOG_close;
  105. End;
  106. Procedure LOG(Const message : String; data : Int64);
  107. Begin
  108. If Not LOG_enabled Then
  109. Exit;
  110. LOG_open;
  111. Writeln(LOG_file, message, ' = ', data);
  112. LOG_close;
  113. End;
  114. Procedure LOG(Const message : String; data : QWord);
  115. Begin
  116. If Not LOG_enabled Then
  117. Exit;
  118. LOG_open;
  119. Writeln(LOG_file, message, ' = ', data);
  120. LOG_close;
  121. End;
  122. Procedure LOG(Const message : String; data : Single);
  123. Begin
  124. If Not LOG_enabled Then
  125. Exit;
  126. LOG_open;
  127. Writeln(LOG_file, message, ' = ', data);
  128. LOG_close;
  129. End;
  130. Procedure LOG(Const message : String; data : Double);
  131. Begin
  132. If Not LOG_enabled Then
  133. Exit;
  134. LOG_open;
  135. Writeln(LOG_file, message, ' = ', data);
  136. LOG_close;
  137. End;
  138. Procedure LOG(Const message : String; Const data : String);
  139. Begin
  140. If Not LOG_enabled Then
  141. Exit;
  142. LOG_open;
  143. Writeln(LOG_file, message, ' = ', data);
  144. LOG_close;
  145. End;
  146. Procedure LOG(Const message : String; data : TPTCFormat);
  147. Begin
  148. If Not LOG_enabled Then
  149. Exit;
  150. LOG_open;
  151. Write(LOG_file, message, ' = Format(');
  152. If data = Nil Then
  153. Write(LOG_file, 'NIL')
  154. Else
  155. Begin
  156. Write(LOG_file, data.bits:2);
  157. If data.direct Then
  158. Begin
  159. Write(LOG_file, ',$', HexStr(data.r, 8), ',$', HexStr(data.g, 8), ',$', HexStr(data.b, 8));
  160. If data.a <> 0 Then
  161. Write(LOG_file, ',$', HexStr(data.a, 8));
  162. End;
  163. End;
  164. Writeln(LOG_file, ')');
  165. LOG_close;
  166. End;
  167. Procedure LOG(Const message : String; data : TPTCError);
  168. Begin
  169. If Not LOG_enabled Then
  170. Exit;
  171. LOG_open;
  172. Writeln(LOG_file, message, ': ', data.message);
  173. LOG_close;
  174. End;