INI फाइलें पाठ-आधारित फाइलें हैं जो किसी एप्लिकेशन के कॉन्फ़िगरेशन डेटा को संग्रहीत करने के लिए उपयोग की जाती हैं।
भले ही खिड़कियाँ कई मामलों में, एप्लिकेशन-विशिष्ट कॉन्फ़िगरेशन डेटा को संग्रहीत करने के लिए विंडोज रजिस्ट्री का उपयोग करने की सिफारिश करता है, आप पाएंगे कि आईएनआई फाइलें प्रोग्राम के लिए अपनी सेटिंग्स तक पहुंचने का एक तेज़ तरीका प्रदान करती हैं। विंडोज़ स्वयं भी INI फ़ाइलों का उपयोग करता है; desktop.ini तथा boot.ini सिर्फ दो उदाहरण हैं।
एक स्थिति बचत तंत्र के रूप में INI फ़ाइलों का एक सरल उपयोग अगर आप अपने पिछले स्थान पर पुन: प्रकट करना चाहते हैं, तो किसी प्रपत्र का आकार और स्थान सहेजना होगा। इसके बजाय एक पूरे के माध्यम से खोज सूचना का डेटाबेस आकार या स्थान खोजने के लिए, इसके बजाय एक INI फ़ाइल का उपयोग किया जाता है।
INI फ़ाइल स्वरूप
प्रारंभिककरण या कॉन्फ़िगरेशन सेटिंग्स फ़ाइल (.INI) एक पाठ फ़ाइल है जिसमें 64 केबी की सीमा है, जो प्रत्येक खंड में विभाजित है, जिसमें प्रत्येक शून्य या अधिक कुंजी है। प्रत्येक कुंजी में शून्य या अधिक मान होते हैं।
यहाँ एक उदाहरण है:
[अनुभाग का नाम]
keyname1 = मूल्य
;टिप्पणी
keyname2 = मूल्य
खंड नाम वर्ग कोष्ठक में संलग्न हैं और एक पंक्ति की शुरुआत में शुरू होना चाहिए। अनुभाग और मुख्य नाम केस-असंवेदनशील हैं (मामला कोई फर्क नहीं पड़ता), और रिक्ति वर्ण नहीं हो सकते। प्रमुख नाम एक समान चिह्न ("=") के बाद, वैकल्पिक रूप से रिक्ति वर्णों से घिरा हुआ है, जिसे अनदेखा किया जाता है।
यदि एक ही अनुभाग एक ही फ़ाइल में एक से अधिक बार दिखाई देता है, या यदि एक ही कुंजी एक ही अनुभाग में एक से अधिक बार दिखाई देती है, तो अंतिम घटना प्रबल होती है।
एक कुंजी हो सकती है तार, पूर्णांक, या बूलियनमूल्य.
डेल्फी IDE कई मामलों में INI फ़ाइल प्रारूप का उपयोग करता है। उदाहरण के लिए, .DSK फाइलें (डेस्कटॉप सेटिंग्स) INI प्रारूप का उपयोग करें।
TIniFile वर्ग
डेल्फी प्रदान करता है TIniFile वर्ग, में घोषित inifiles.pas यूनिट, INI फ़ाइलों से मानों को संग्रहीत और पुनर्प्राप्त करने के तरीकों के साथ।
TIniFile विधियों के साथ काम करने से पहले, आपको कक्षा का एक उदाहरण बनाने की आवश्यकता है:
का उपयोग करता है inifiles;
...
वर
IniFile: TIniFile;
शुरू
IniFile: = TIniFile। बनाएँ ( 'myapp.ini');
उपरोक्त कोड एक IniFile ऑब्जेक्ट बनाता है और 'myapp.ini' को वर्ग की एकमात्र संपत्ति में असाइन करता है - a फ़ाइल नाम गुण -II फ़ाइल का नाम निर्दिष्ट करने के लिए जिसका आप उपयोग करना चाहते हैं।
जैसा कि ऊपर लिखा गया कोड दिखता है myapp.ini में दर्ज करें \खिड़कियाँ निर्देशिका। एप्लिकेशन डेटा को संग्रहीत करने का एक बेहतर तरीका एप्लिकेशन के फ़ोल्डर में है - बस फ़ाइल के पूर्ण पथनाम को निर्दिष्ट करें सृजन करना तरीका:
// INI को एप्लिकेशन फ़ोल्डर में रखें,
// इसे एप्लिकेशन का नाम दें
// और 'आईएन' विस्तार के लिए:
iniFile: = TIniFile। बनाएँ (ChangeFileExt (अनुप्रयोग) ExeName, '। Ini'));
आईएनआई से पढ़ना
TIniFile वर्ग में कई "पढ़े हुए" तरीके हैं। ReadString एक पढ़ता है स्ट्रिंग मान एक कुंजी से, ReadInteger। ReadFloat और इसी तरह की एक कुंजी से एक नंबर पढ़ने के लिए उपयोग किया जाता है। सभी "रीड" विधियों में एक डिफ़ॉल्ट मान है जिसका उपयोग किया जा सकता है यदि प्रविष्टि मौजूद नहीं है।
उदाहरण के लिए, ReadString के रूप में घोषित किया गया है:
समारोह ReadString (स्थिरांक अनुभाग, पहचान, डिफ़ॉल्ट: स्ट्रिंग): स्ट्रिंग; ओवरराइड;
आईएनआई को लिखें
TIniFile में प्रत्येक "रीड" पद्धति के लिए एक "राइट" विधि है। वे WriteString, WriteBool, WriteInteger, आदि हैं।
उदाहरण के लिए, यदि हम अंतिम व्यक्ति के नाम को याद रखने के लिए एक कार्यक्रम चाहते हैं, जिसने इसका उपयोग किया था, जब यह था, और मुख्य रूप से निर्देशांक क्या थे, तो हम एक अनुभाग स्थापित कर सकते हैं जिसे कहा जाता है उपयोगकर्ता, एक कीवर्ड कहा जाता है अंतिम, दिनांक जानकारी को ट्रैक करने के लिए, और एक अनुभाग बुलाया प्लेसमेंट कुंजी के साथ ऊपर, बाएं, चौड़ाई, तथा ऊंचाई.
project1.ini
[उपयोगकर्ता]
अंतिम = जरखो गजिक
दिनांक = 01/29/2009
[नियुक्ति]
शीर्ष = 20
वाम = 35
चौड़ाई = 500
ऊँचाई = 340
ध्यान दें कि नाम की कुंजी अंतिम एक स्ट्रिंग मान रखता है, दिनांक एक TDateTime मान रखता है, और सभी कुंजियाँ प्लेसमेंट अनुभाग एक पूर्णांक मान रखता है।
मुख्य फॉर्म का ऑनक्रिएट इवेंट एप्लिकेशन की आरंभिक फ़ाइल में मानों तक पहुँचने के लिए आवश्यक कोड को संग्रहीत करने के लिए सही जगह है:
प्रक्रिया TMainForm। फॉर्मक्रिएट (प्रेषक: TObject);
वर
appini: TIniFile;
LastUser: स्ट्रिंग;
LastDate: TDateTime;
शुरू
appini: = TIniFile। बनाएँ (ChangeFileExt (अनुप्रयोग) ExeName, '। Ini'));
प्रयत्न
// यदि कोई अंतिम उपयोगकर्ता खाली स्ट्रिंग नहीं लौटाता है
LastUser: = appINI.ReadString ('उपयोगकर्ता', 'अंतिम', '');
// यदि कोई अंतिम तिथि नहीं है तो आज की तारीख
अंतिम तिथि: = appINI.ReadDate ('उपयोगकर्ता', 'तिथि', तिथि);
// संदेश दिखाएं
ShowMessage ('यह प्रोग्राम पहले' + LastUser + 'द्वारा' + DateToStr (LastDate)) पर उपयोग किया गया था;
शीर्ष: = appINI.ReadInteger ('प्लेसमेंट', 'टॉप', टॉप);
वाम: = appINI.ReadInteger ('प्लेसमेंट', 'लेफ्ट', लेफ्ट);
चौड़ाई: = appini.ReadInteger ('प्लेसमेंट', 'चौड़ाई', चौड़ाई);
ऊँचाई: = appini.ReadInteger ('प्लेसमेंट', 'ऊँचाई', ऊँचाई);
आखिरकार
appINI.Free;
समाप्त;
समाप्त;
मुख्य फॉर्म का ऑनक्लास इवेंट के लिए आदर्श है आईएनआई बचाओ परियोजना का हिस्सा।
प्रक्रिया TMainForm। FormClose (प्रेषक: Tobject; वर क्रिया: TCloseAction);
वर
appini: TIniFile;
शुरू
appini: = TIniFile। बनाएँ (ChangeFileExt (अनुप्रयोग) ExeName, '। Ini'));
प्रयत्न
appINI.WriteString ('उपयोगकर्ता', 'अंतिम', 'जरको गजिक');
appini.WriteDate ('उपयोगकर्ता', 'तिथि', तिथि);
साथ में appini, MainForm कर
शुरू
WriteInteger ('प्लेसमेंट', 'टॉप', टॉप);
WriteInteger ('प्लेसमेंट', 'लेफ्ट', लेफ्ट);
WriteInteger ('प्लेसमेंट', 'चौड़ाई', चौड़ाई);
WriteInteger ('प्लेसमेंट', 'ऊँचाई', ऊँचाई);
समाप्त;
आखिरकार
appIni। नि: शुल्क;
समाप्त;
समाप्त;
आईएनआई अनुभाग
EraseSection एक INI फ़ाइल के पूरे अनुभाग को मिटा देता है। ReadSection तथा ReadSections INI फ़ाइल में सभी वर्गों (और प्रमुख नामों) के नाम के साथ एक TStringList ऑब्जेक्ट भरें।
INI सीमाएँ और चढ़ाव
TIniFile वर्ग उपयोग करता है विंडोज एपीआई जो INI फ़ाइलों पर 64 KB की सीमा लगाता है। यदि आपको 64 KB से अधिक डेटा स्टोर करने की आवश्यकता है, तो आपको TMemIniFile का उपयोग करना चाहिए।
यदि आपके पास 8 K मान से अधिक वाला कोई अनुभाग है, तो एक और समस्या उत्पन्न हो सकती है। समस्या को हल करने का एक तरीका रीडासनेशन विधि का अपना संस्करण लिखना है।