Delphi alternatives to some File I/O C++ lib functions? -


  • फ़ॉपन_एस & lt; - & gt; ओपनफ़ाइल
  • fclose & lt; - & gt; CloseFile

    क्या मेरी धारणा सही है?

    मुझे आश्चर्य है कि क्या उपयोग करना बेहतर है, OpenFile या CreateFile बाद में ज्यादा आजादी मिलती है, लेकिन क्या यह तेज़ है?

    मैं न तो डेल्फी का प्रयोग करूंगा ??? ? मैं धाराओं का उपयोग करेगा

    आप पूछते हैं कि कौन सा तेज है, OpenFile या CreateFile

    / code>। वे मूल रूप से एक समान हैं, लेकिन किसी फ़ाइल को खोलने की कोई भी विधि सिस्टम कॉल पर किसी भी तरह से मानचित्रण कर रही है, इसलिए प्रदर्शन उतना ही वही होगा जितना कोई भी आप इसे कैसे करते हैं। क्या और भी है, जब एक फ़ाइल मामले खोलने के लिए प्रदर्शन करता है, यह तब होता है जब उस समय पढ़ना या लिखना व्यय होता है।

    प्रदर्शन के बारे में कोई भी प्रश्न संदर्भ के बिना जवाब देना मुश्किल है। एक ऐप के लिए जवाब जो कि हजारों छोटे टेक्स्ट फाइल्स पढ़ता है, एक से अलग है जो टेप ड्राइव पर बैकअप करता है, उदाहरण के लिए।

    फिर भी, अपने मूल बिंदु पर बल देने के लिए, उत्कृष्ट उच्च-स्तरीय का लाभ उठाएं ढांचा जिस डेल्फी प्रदान करता है, धाराओं का उपयोग करें, निम्न-स्तरीय I / O से बचें और आनंद लें!


    तो, डेल्फी स्ट्रीम कैसे उपयोग करता है? मैं एक फ़ाइल में, कुछ स्ट्रिंग में कुछ पाठ लिखने का बना हुआ उदाहरण के साथ इसे वर्णन करने की कोशिश करूंगा।

      प्रक्रिया SaveTextToFile (फ़ाइलनाम, पाठ: स्ट्रिंग); Var स्ट्रीम: टीफ़ाइलस्ट्रीम; स्ट्रीम शुरू करें: = TFileStream.Create (फ़ाइलनाम, एफएमसीईआरटी); यदि लंबाई (टेक्स्ट) & gt; 0 फिर स्ट्रीम करें। वाइटबफर (टेक्स्ट [1], लंबाई (टेक्स्ट) * आकारऑफ़ (चार)) की कोशिश करें; अंत में स्ट्रीम। फ्री; समाप्त; समाप्त;   

    यह बहुत आत्म-व्याख्यात्मक है TFileStream कन्स्ट्रक्टर के द्वितीय पैरामीटर फ़ाइल मोड को निर्धारित करता है। यहां हम एक नई फाइल बनाना चाहते हैं और इसलिए यदि कोई भी सामग्री मौजूद है, तो उसे निकाल दिया जाता है। आप इस पैरामीटर के साथ फ़ाइल साझाकरण को निर्दिष्ट भी कर सकते हैं।

    बफ़र को लिखने के लिए कोड में थोड़ी बॉयलर-प्लेट है लेकिन फिर से बहुत सरल है।

    इसे वापस परिणाम लगभग लोड हो रहा है समान रूटीन:

      फ़ंक्शन लोड टेक्स्टफ़ॉर्मफाइल (फ़ाइलनाम: स्ट्रिंग): स्ट्रिंग; Var स्ट्रीम: टीफ़ाइलस्ट्रीम; स्ट्रीम शुरू करें: = TFileStream.Create (फ़ाइलनाम, एफएम ओपनरेड); SetLength का प्रयास करें (परिणाम, स्ट्रीम। साइड डिव आकार (चार)); यदि लंबाई (परिणाम) & gt; 0 फिर स्ट्रीम करें। रायबफर (परिणाम [1], लंबाई (परिणाम) * आकारऑफ़ (चार)); अंत में स्ट्रीम। फ्री; समाप्त; समाप्त;   

    यदि आप फ़ाइल के आसपास तलाश करना चाहते हैं तो आप स्ट्रीम की स्थिति संपत्ति सेट कर सकते हैं, या Seek () को कॉल कर सकते हैं तरीका। उत्तरार्द्ध का लाभ यह है कि आप वर्तमान स्थिति या अंतिम स्थिति से तलाश कर सकते हैं।

    स्ट्रीम मुहावरेदार डेल्फी हैं वे व्यापक रूप से आरटीएल और वीसीएल और तृतीय पक्ष पुस्तकालयों में उपयोग किया जाता है। वे देशी डेल्फी तरीके से अपवादों के साथ त्रुटियों का संकेत देते हैं। कई अलग-अलग धारा वर्ग हैं जो सभी एक सामान्य पूर्वजों से प्राप्त होते हैं और कई दिनचर्या इस सामान्य पूर्वज को स्वीकार करते हैं।

Comments