Я часто использую небольшие методы для отладки, которые не используются в реальной программе. Обычно у большинства моих классов есть метод AsString, который я добавляю в часы. Я знаю, что в Delphi 2010 есть визуализаторы, но я все еще в 2007 году.
Рассмотрим этот пример:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
type
TMyClass = class
F : integer;
function AsString : string;
end;
function TMyClass.AsString: string;
begin
Result := 'Test: '+IntToStr(F);
end;
function SomeTest(aMC : TMyClass) : boolean;
begin
//I want to be able to watch aMC.AsString while debugging this complex routine!
Result := aMC.F > 100;
end;
var
X : TMyClass;
begin
X := TMyClass.Create;
try
X.F := 100;
if SomeTest(X)
then writeln('OK')
else writeln('Fail');
finally
X.Free;
end;
readln;
end.
Если я добавляю X.AsString как часы, я просто получаю «Функция для вызова, TMyClass.AsString, была удалена компоновщиком».
Как заставить компоновщик включить его? Мой обычный трюк - использовать метод где-то в программе, но разве нет более элегантного способа сделать это?
ОТВЕТ:
GJ предоставил лучший способ сделать это.
initialization
exit;
TMyClass(nil).AsString;
end.