मैं डेल्फी के लिए नया हूं (इसमें लगभग 6 महीने के लिए प्रोग्रामिंग कर रहा हूं)। अब तक, यह बेहद निराशाजनक अनुभव रहा है, इनमें से अधिकतर डेल्फी तारीखों और समयों को संभालने में कितना बुरा है। शायद मुझे लगता है कि यह बुरा है क्योंकि मुझे नहीं पता कि टीडीएटी और टीटाइम का सही तरीके से उपयोग कैसे करें, मुझे नहीं पता। यहाँ अभी मुझ पर हो रहा है:डेटाटाइम मैनिपुलेशन को सटीक रूप से संभालने के लिए डेल्फी की अक्षमता के आसपास मैं कैसे काम करूं?
// This shows 570, as expected
ShowMessage(IntToStr(MinutesBetween(StrToTime('8:00'), StrToTime('17:30'))));
// Here I would expect 630, but instead 629 is displayed. WTF!?
ShowMessage(IntToStr(MinutesBetween(StrToTime('7:00'), StrToTime('17:30'))));
सटीक कोड मैं का उपयोग नहीं है यही कारण है, सब कुछ चर में है और एक अन्य संदर्भ में प्रयोग किया है, लेकिन मुझे लगता है कि आप इस समस्या को देख सकते हैं। वह गणना गलत क्यों है? मुझे इस समस्या के आसपास काम करने का अनुमान है?
ShowMessage(IntToStr(trunc(MinuteSpan(a, b)))); // Gives 629
हालांकि, यह दौर के लिए बेहतर हो सकता है:
डेल्फी के 'टीडीएटीटाइम' के साथ बड़ी समस्या यह है कि वे निश्चित बिंदुओं के बजाय दिन का प्रतिनिधित्व करने वाले युगल हैं। इसका मतलब है कि वे मिनटों का बिल्कुल प्रतिनिधित्व नहीं कर सकते हैं। (यकीन नहीं है कि क्या समस्या का कारण बनता है, लेकिन मुझे आश्चर्य नहीं होगा) – CodesInChaos
@CodesInChaos: मुझे यह बताया गया है। यह मेरे लिए उचित बहाना नहीं है। वे सिर्फ [लीकी एब्स्ट्रक्शन] (http://www.joelonsoftware.com/articles/LeakyAbstractions.html) रखने के बजाय इसे सही तरीके से काम कर सकते थे। –
डेल्फी के नए संस्करणों (2006 या उससे अधिक) में आप अपने स्वयं के रिकॉर्ड दिनांक/समय का प्रतिनिधित्व कर सकते हैं और ऑपरेटरों को अधिभारित कर सकते हैं। फिर आप स्वाभाविक रूप से त्रुटिपूर्ण डबल-डेटटाइम्स को छोड़ सकते हैं। – CodesInChaos