में स्थिरांक को परिभाषित करने में त्रुटि मैं डेल्फी (डेल्फी 2005 जो है) में एक कॉन्स को परिभाषित करने की कोशिश कर रहा हूं जो कि अन्य स्थिरांक पर आधारित है, लेकिन डेल्फी शिकायत करता है कि यह निरंतर अभिव्यक्ति नहीं है।डेल्फी
program myProgram;
const
Xpoints = 20;
Ypoints = 30;
ArraySize = trunc(sqrt(Xpoints*Ypoints));
var
myArray : array[1..ArraySize] of integer;
मैं कर सकता ArraySize = Xpoints * Ypoints लेकिन sqrt समस्याओं का कारण बनता: इस तरह मेरे कोड दिखता है। विचार यह है कि मैं सरणी को एक्सपॉइंट्स और वाईपॉइंट्स द्वारा सरणी का आकार देना चाहता हूं। मैं ऐसा कुछ कर सकता था:
program myProgram;
const
sqrtXpoints = 4.472135956;
sqrtYpoints = 5.47722557506;
Xpoints = trunc(sqrtXpoints*sqrtXpoints);
Ypoints = trunc(sqrtYpoints*sqrtYpoints);
ArraySize = trunc(sqrtXpoints*sqrtYpoints);
var
myArray : array[1..ArraySize] of integer;
ट्रंक के लिए वर्ग रूट मानों को थोड़ा अधिक ध्यान देने की देखभाल करना। अगर मैं sqrtXpoints या sqrtYpoints बदलता हूं, तो सब ठीक से अपडेट हो जाएगा, लेकिन यह दृष्टिकोण बस ऐसा लगता है ... बेवकूफ।
एक अस्थायी ठीक जैसा कि मैंने लगातार अपने आप को इस तरह का मूल्यांकन कर सकते हैं:
program myProgram;
const
Xpoints = 20;
Ypoints = 30;
ArraySize = 24;
var
myArray : array[1..ArraySize] of integer;
लेकिन मुझे यह पसंद नहीं है क्योंकि ArraySize स्वचालित रूप से अगर मैं Xpoints या Ypoints बदलने अपडेट नहीं होता।
यह संकलक की तरह लगता है पता होना चाहिए कि कैसे एक निरंतर ऊपर और इस तरह भी सरल बातों के लिए उदाहरण जैसी चीजों के लिए संकलन समय पर एक और निरंतर का एक गणितीय समारोह के रूप में परिभाषित किया गया मूल्यांकन करने के लिए:
const
pi = 4.0*arctan(1.0);
लेकिन मैं इसे स्वीकार करने के लिए नहीं मिल सकता है। कोई सुझाव? आपकी सहायता के लिये पहले से ही धन्यवाद!
आप बस लगातार घोषणाओं में कार्यों का उपयोग नहीं कर सकते। –
कंपाइलर 'sqrt' का मूल्यांकन नहीं करेगा। आप मान सकते हैं, टाइप किए गए स्थिरांक का उपयोग करें और प्रारंभिक समय पर इसे ठीक करें। उस उड़ान को बनाने के लिए आपको कुछ वर्चुअलअलोक कॉल की आवश्यकता होगी। –
एक और वर्कअराउंड विकल्प एक कंपाइलर का उपयोग करना है जो निरंतर अभिव्यक्तियों (एफपीसी) पर कम पसंद है। – OnTheFly