D2007 से XE2 में कनवर्ट कर रहा है, मैंTENcoding प्रकार के फ़ंक्शन पैरामीटर के लिए डिफ़ॉल्ट मान कैसे सेट करें?
को यह समारोहfunction Add_Line(FileStream : TFileStream; ALine : string) : boolean;
परिवर्तित
function Add_Line(FileStream : TFileStream; ALine : string; Enc: TEncoding = nil) : boolean;
var
AStr: ANSISTring;
begin
Result := True;
if Enc = nil then Enc := TEncoding.ANSI;
try
//Old FileStream.WriteBuffer(Pointer(ALine)^, Length(ALine));
if Enc = TEncoding.UTF8 then
AStr := UTF8Encode(ALine)
else
AStr := ANSIString(ALine);
FileStream.WriteBuffer(AStr[1], Length(ALine));
end;
except
Result := False;
end;
end;
दलील:
बदलें के रूप में संभव
थोड़ा के रूप में Add_Line का उपयोग कर कोड को स्वीकार करें यूनिक में स्वचालित परिवर्तन ओडीई, केवल आखिरी पल में 8-बिट टेक्स्ट फाइलें लिखें (इसका उपयोग एक्सएमएल और सीएसवी में किया जाता है)। भविष्य में हम अभी भी यूटीएफ -16 फाइलों पर जा सकते हैं यदि हम चाहते हैं।
मैं की तरह कुछ परिभाषित करने के लिए पसंद आया होगा:
function Add_Line(FileStream : TFileStream; ALine : string; Enc: TEncoding = TEncoding.ANSI) : boolean;
लेकिन संकलक शिकायत ;-)
कि संभव ऐसा कुछ है?
निरंतर मानों के लिए डिफ़ॉल्ट पैराम का प्रतिबंध एक कारण है कि मैं हमेशा ओवरलोड का उपयोग करने का पक्ष लेता हूं। –
अधिभार कभी मेरे दिमाग को पार नहीं किया ;-) –