2008-10-01 10 views
6

का उपयोग कर किसी कारण से फ़ाइल सहेजें, हाल ही में * .udl मेरे मुवक्किल सिस्टम के कई पर फाइल नहीं रह गया है संगत के रूप में वे एक बार एएनएसआई फ़ाइलें, जो अब के साथ संगत है के रूप में सहेजा गया है अपेक्षित यूनिकोड फ़ाइल प्रारूप। अंतिम परिणाम एक त्रुटि संवाद है जो कहता है "फ़ाइल मान्य यौगिक फ़ाइल नहीं है"।खुला एक एएनएसआई फ़ाइल और आ यूनिकोड डेल्फी

सबसे आसान तरीका है प्रोग्राम के इन फ़ाइलों को खोलने और एक यूनिकोड फ़ाइल के रूप में बचाने के लिए क्या है? मुझे पता है कि मैं नोटपैड में प्रत्येक को खोलकर और फिर उसी फ़ाइल के रूप में सहेजकर इसे "यूनिकोड" के साथ सहेजने के एन्कोडिंग अनुभाग में चयनित "यूनिकोड" के साथ कर सकता हूं, लेकिन मुझे समर्थन में कटौती करने के लिए प्रोग्राम में ऐसा करने की ज़रूरत है कहता है।

यह समस्या सिर्फ एक निर्देशिका में * .txt फ़ाइल बनाने, नाम बदलने * .udl, तो यह माइक्रोसॉफ्ट संपादक का उपयोग कर संपादित करने के लिए, नकल करने बहुत आसान है। फिर इसे नोटपैड में खोलें और फ़ाइल को एएनएसआई एन्कोडेड फ़ाइल के रूप में सहेजें। Udl संपादक से udl खोलने का प्रयास करें और यह आपको इसके भ्रष्ट बताएगा। फिर इसे यूनिकोड एन्कोडेड फ़ाइल के रूप में सहेजें (नोटपैड का उपयोग करके) और यह ठीक से फिर से खुल जाएगा।

+0

डेल्फी का कौन सा संस्करण हम बात कर रहे हैं? –

+0

डेल्फी संस्करण 2006 या 200 9। – skamradt

उत्तर

7

यह मेरा TGpTextFile इकाई के साथ क्या करना बहुत सरल है। मैं एक छोटा सा नमूना रखूंगा और इसे यहां पोस्ट करूंगा।

यह नए डेल्फी 200 9 के साथ भी बहुत आसान होना चाहिए - क्या आप इसका उपयोग कर रहे हैं?

संपादित करें: यह अपने आप यह कैसे पूर्व 2009 में मेरा सामान का उपयोग कर Delphis कर सकते हैं।

var 
    strAnsi : TGpTextFile; 
    strUnicode: TGpTextFile; 
begin 
    strAnsi := TGpTextFile.Create('c:\0\test.udl'); 
    try 
    strAnsi.Reset; // you can also specify non-default 8-bit codepage here 
    strUnicode := TGpTextFile.Create('c:\0\test-out.udl'); 
    try 
     strUnicode.Rewrite([cfUnicode]); 
     while not strAnsi.Eof do 
     strUnicode.Writeln(strAnsi.Readln); 
    finally FreeAndNil(strUnicode); end; 
    finally FreeAndNil(strAnsi); end; 
end; 

लाइसेंस: उपरोक्त कोड खंड सार्वजनिक डोमेन से संबंधित है। वैसे भी इसका इस्तेमाल करें।

9

ठीक है, डेल्फी 2009 का उपयोग कर, मैं निम्नलिखित कोड काम करने के लिए प्रकट होता है जो साथ आने के लिए सक्षम था, लेकिन यह इस रूपांतरण करने का उचित तरीका है?

var 
    sl : TStrings; 
    FileName : string; 
begin 
    FileName := fServerDir+'configuration\hdconfig4.udl'; 
    sl := TStringList.Create; 
    try 
    sl.LoadFromFile(FileName, TEncoding.Default); 
    sl.SaveToFile(FileName, TEncoding.Unicode); 
    finally 
    sl.Free; 
    end; 
end; 
+0

tStrings.Create ??? के लिए कोई सार त्रुटि नहीं ??? –

+0

हाँ, TStringList बहुत बेहतर होना चाहिए :) – gabr

+0

इसके अलावा, कोड ठीक है (और यह भी काम करता है, मैंने अभी चेक किया है)। – gabr

संबंधित मुद्दे