यह एक अनुकूलन है। चर min
और sec
मान द्वारा पारित किए जाते हैं। इसका मतलब है कि उन्हें संशोधक कॉलर द्वारा नहीं देखा जाता है और इस प्रक्रिया के लिए निजी हैं। इसलिए संकलक काम कर सकता है कि उन्हें असाइन करना व्यर्थ है। चर को आवंटित मान कभी नहीं पढ़ा जा सकता है। तो संकलक समय बचाने और असाइनमेंट को छोड़ने के लिए चुनता है। मैं उम्मीद करते हैं कि आप इस तरह की प्रक्रिया की घोषणा करने के लिए होती:
procedure GetDegree(const num: DWORD; var degree: DWORD; var min, sec: Extended);
जैसा कि मैंने अपने पिछले प्रश्न में कहा, वहाँ वास्तव में नहीं Extended
का प्रयोग करने में ज्यादा बात है। आप मानक फ्लोटिंग पॉइंट प्रकारों में से एक, Single
या Double
से बेहतर होंगे। या यहां तक कि जेनेरिक Real
का उपयोग करना जो Double
पर मानचित्र करता है।
इसके अलावा, आपने min
को फ़्लोटिंग पॉइंट प्रकार के घोषित करने के लिए घोषित किया है, लेकिन गणना एक पूर्णांक की गणना करती है। आपके पिछले प्रश्न का मेरा जवाब इस संबंध में काफी सटीक है।
मैं अनुशंसा करता हूं कि आप इन मानों को पकड़ने के लिए एक रिकॉर्ड बनाएं। चार अलग-अलग चरों को पास करने से आपका फ़ंक्शन बहुत गन्दा हो जाता है और encapsulation को तोड़ देता है। इन तीन मानों का अर्थ केवल संपूर्ण रूप में विचार करते समय होता है।
type
TGlobalCoordinate = record
Degrees: Integer;
Minutes: Integer;
Seconds: Real;
end;
function LongLatToGlobalCoordinate(const LongLat: DWORD): TGlobalCoordinate;
begin
Result.Degrees := LongLat div (500*60*60);
Result.Minutes := LongLat div (500*60) - Result.Degrees*60;
Result.Seconds := LongLat/500 - Result.Minutes*60 - Result.Degrees*60*60;
end;
function GlobalCoordinateToLongLat(const Coord: TGlobalCoordinate): DWORD;
begin
Result := Round(500*(Coord.Seconds + Coord.Minutes*60 + Coord.Degrees*60*60));
end;
स्रोत
2012-05-23 18:52:31
धन्यवाद एक बार फिर डेविड आप कर दिया गया एक जबरदस्त मदद today.Didn't इन लानत optimzations बारे में पता था है मैं कोड के इस टुकड़े से उन्हें हटा सकते हैं? – opc0de
@ opc0de आप अनुकूलन को हटाना नहीं चाहते हैं। आप अपना कोड ठीक करना चाहते हैं ताकि यह कॉलर को 'min' और' sec' मान वापस कर सके। अन्यथा आप उन्हें पहली जगह की गणना करने के लिए परेशान क्यों कर रहे हैं? –
ठीक है अब इसे मिला। धन्यवाद फिर बेवकूफ गलती :)! – opc0de