मैं मानक डेल्फी स्थिरांक डेमोंडे आदि का उपयोग कर रहा हूं और मैं उन्हें स्थानीय तारों (जैसे "लुंडी") में परिवर्तित करना चाहता हूं। क्या इसके लिए एक साधारण आरटीएल या वीसीएल कॉल है?डेल्फी में स्थानीयकृत दिन के नाम कैसे प्राप्त करें?
उत्तर
I सोचा मुझे "वर्तमान लोकेल" के लिए एक आसान तरीका मिला था।
.. वैश्विक सरणियों LongDayNames [] और ShortDayNames [] system.pas
तो में परिभाषित कर रहे हैं
Label.Text = LongDayName[DayMonday];
काम करना चाहिए, उदाहरण के लिए। इसके अलावा यह "रविवार" देता है। ऐसा इसलिए है क्योंकि डेल्फी आंतरिक रूप से दो दिन की संख्याबद्ध योजनाओं का समर्थन करता है, और डेमोंडे आईएसओ 8601 स्थिर 1 है, जबकि लांगडेनाम नाम सरणी सप्ताह के पहले दिन के रूप में रविवार की अपेक्षा करता है। सी ++ बिल्डर चीजों को और भ्रमित करता है क्योंकि स्ट्रिंग सरणी शून्य पर शुरू होती है, एक नहीं।
हां, वे GetFormatSettings ;-) का उपयोग करके प्रारंभ किए गए हैं। लक्ष्य के लिए हमेशा अलग-अलग सड़कों होती हैं, लेकिन इस मामले में उनके पास एक ही स्रोत होता है। –
आप से अलग स्थान सेटिंग प्राप्त कर सकते हैं:
var
fs : TFormatSettings;
x : string;
begin
GetLocaleFormatSettings(GetThreadlocale, fs);
x:= FormatDateTime('%mmmm', Now, fs);
// etc..
end;
GetThreadLocale वर्तमान LCID देता है, लेकिन आप अपने आप को अन्य नंबर का उपयोग कर सकते हैं।
TFormatSettings रिकॉर्ड:
TFormatSettings = record
CurrencyFormat: Byte;
NegCurrFormat: Byte;
ThousandSeparator: Char;
DecimalSeparator: Char;
CurrencyDecimals: Byte;
DateSeparator: Char;
TimeSeparator: Char;
ListSeparator: Char;
CurrencyString: string;
ShortDateFormat: string;
LongDateFormat: string;
TimeAMString: string;
TimePMString: string;
ShortTimeFormat: string;
LongTimeFormat: string;
ShortMonthNames: array[1..12] of string;
LongMonthNames: array[1..12] of string;
ShortDayNames: array[1..7] of string;
LongDayNames: array[1..7] of string;
TwoDigitYearCenturyWindow: Word;
end;
एक पूरी सूची के लिए भी http://www.microsoft.com/globaldev/reference/lcid-all.mspx देखें।
आप वाकई फैंसी परिणाम बनाने के लिए स्वयं प्रारूपों को भी बदल सकते हैं।
रास्ते से अच्छा सवाल, मुझे विवरण देखना था लेकिन यह संभव है ;-)। –