मैं अक्सर डिबगिंग की सहायता के लिए छोटी विधियां करता हूं, जिनका उपयोग वास्तविक प्रोग्राम में नहीं किया जाता है। आम तौर पर मेरे अधिकांश वर्गों में एक एएसस्ट्रिंग-विधि होती है जिसे मैं घड़ियों में जोड़ता हूं। मैं जानता हूँ कि डेल्फी 2010 visualizers है, लेकिन मैं पर 2007मैं लिंकर को डिबगिंग के दौरान आवश्यक फ़ंक्शन को शामिल करने के लिए कैसे मजबूर करूं?
अभी भी कर रहा हूँ इस उदाहरण पर विचार: यदि मैं एक घड़ी के रूप में X.AsString जोड़ने
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.
, मैं सिर्फ मिल "समारोह के नाम से जाना, TMyClass एएसस्ट्रिंग, लिंकर द्वारा समाप्त किया गया था "।
मैं लिंकर को इसे शामिल करने के लिए कैसे मजबूर करूं? मेरी सामान्य चाल प्रोग्राम में कहीं भी विधि का उपयोग करती है, लेकिन क्या ऐसा करने का कोई और शानदार तरीका नहीं है?
उत्तर: जीजे ने इसे करने का सबसे अच्छा तरीका प्रदान किया।
initialization
exit;
TMyClass(nil).AsString;
end.
+1। मैं आमतौर पर यही करता हूं। इसे प्रारंभिक ब्लॉक में रखें ताकि इसे लिंक नहीं किया जा सके। –
मैं अपने आप से लड़ रहा था कि मुझे किस जवाब को स्वीकार करना चाहिए - यह "प्रकाशित चाल" के साथ आपका एक या आपका दूसरा जवाब है। मैंने इसे चुना क्योंकि यह रिलीज संस्करण को प्रभावित नहीं करेगा। –
हां, और यदि आपके फ़ंक्शन को चर जैसे कुछ पैरामीटर की आवश्यकता है, तो केवल प्रारंभिक अनुभाग में लिखें: "अगर @AsString = nil तब;" इसके बजाय पैरामीटर डालने। –