आप स्पष्ट रूप से डेल्फी संस्करण का उपयोग कर रहे हैं जो डेल्फी 6 से नया है। 2005 में अपडेट होने के बावजूद, उस पुस्तक का कोड केवल डेल्फी के उस संस्करण का पता लगाता है। TDDefine.inc उस संस्करण के आधार पर कई संकलक प्रतीकों को परिभाषित करता है, लेकिन जब आप जिस संस्करण का उपयोग कर रहे हैं वह कुछ भी पहचान नहीं है, तो यह नहीं प्रतीकों को परिभाषित करता है। अंत में समस्याएं तब होती हैं जब संकलक टीडीबीएसिक्स.pas में इस तरह के कोड का सामना करता है;
implementation
uses
{$IFDEF Delphi1}
WinTypes, WinProcs;
{$ENDIF}
{$IFDEF Delphi2Plus}
Windows;
{$ENDIF}
{$IFDEF Kylix1Plus}
Types, Libc;
{$ENDIF}
{$IFDEF Delphi1}
{$R TDStrRes.r16}
{$ENDIF}
{$IFDEF Delphi2Plus}
{$R TDStrRes.r32}
{$ENDIF}
{$IFDEF Kylix1Plus}
{$R TDStrRes.r32}
{$ENDIF}
const
UnitName = 'TDBasics';
के बाद से Delphi1
, Delphi2Plus
, या Kylix1Plus
में से कोई भी परिभाषित किया गया है, uses
खंड खाली है। जब हम सब संकलक निर्देशों और निष्क्रिय कोड ब्लॉक की अनदेखी, संकलक अंततः इस तरह कोड देखता है:
implementation
uses
const
UnitName = 'TDBasics';
इसलिए संकलक const
के बजाय एक पहचानकर्ता की उम्मीद के बारे में शिकायत।
इसे ठीक करने के लिए, आपको TDDefine.inc को डेल्फी के अपने संस्करण को पहचानने के लिए सिखाने की आवश्यकता है। आसान, हालांकि, को सभी संस्करण-पहचान कोड और हार्ड-कोड को उन सभी प्रतीकों को अनदेखा कर सकते हैं जो आपके द्वारा उपयोग किए जा रहे संस्करण पर लागू होते हैं। जब तक आप कभी भी डेल्फी 6, से अधिक पुराने संस्करण का उपयोग नहीं करते हैं, तो सभी प्रतीकों आपके सभी संस्करणों पर लागू होंगे। ताकि शेष $DEFINE
निर्देश बिना शर्त कार्रवाई की जाती है
{$IFDEF VER140}
{$DEFINE Delphi6}
{$DEFINE Delphi1Plus}
{$DEFINE Delphi2Plus}
{$DEFINE Delphi3Plus}
{$DEFINE Delphi4Plus}
{$DEFINE Delphi5Plus}
{$DEFINE Delphi6Plus}
{$DEFINE HasAssert}
{$ENDIF}
पहली और आखिरी लाइन निकालें:
TDDefine.pas में कोड की निम्न ब्लॉक का पता लगाएं।
स्रोत
2013-06-05 22:17:09
मुझे लगता है कि सवाल बहुत अच्छा है। पोस्टर "प्रोग्राम को संकलित नहीं कर सकता है और समझ में नहीं आता क्यों"। आपको और क्या चाहिए? कोई भी अतिरिक्त जानकारी संभावित प्रतिक्रियाओं को पूर्वाग्रह दे सकती है। वैसे भी, 1 के खिलाफ 10 यह एक खोज पथ/इकाई मुद्दा नहीं मिला है। उदाहरण के लिए, TDRecList.pas संकलित करने के लिए, फ़ाइलें TDBasics.pas और TDDefine.inc को खोज पथ में मौजूद होना आवश्यक है। – Igor
इगोर, धन्यवाद! मुझे भी समझ में नहीं आता है ... इकाई है (मेरी पोस्ट पर लिंक देखें)। मैं कार्यक्रम में इकाई जोड़ता हूं। यह स्पष्ट है? मैं कोड संकलित नहीं कर सकता। त्रुटियां: http://i.stack.imgur.com/VIM6x.png http://i.stack.imgur.com/7i3To।पीएनजी – tbutton
@ इगोर, आप सही हैं कि अधिक जानकारी प्रतिक्रियाओं को पूर्वाग्रहित करेगी; यह उन्हें अंधेरे में सिर्फ शॉट्स के बजाय * सहायक * होने की ओर पूर्वाग्रह करेगा। इस प्रश्न में लापता जानकारी का सबसे बुनियादी टुकड़ा * त्रुटि संदेश * है। –