खोज…


परिचय

TStringList VCL के TStrings वर्ग का वंशज है। TStringList का उपयोग स्ट्रिंग्स की सूची के भंडारण और हेरफेर के लिए किया जा सकता है। हालांकि मूल रूप से स्ट्रिंग्स के लिए इरादा है, इस वर्ग का उपयोग करके किसी भी प्रकार की वस्तुओं को भी हेरफेर किया जा सकता है।

जब स्ट्रिंग्स की सूची को बनाए रखने के लिए उद्देश्य वहाँ VCL में TStringList का व्यापक रूप से उपयोग किया जाता है। TringringList तरीकों के एक समृद्ध सेट का समर्थन करता है जो उच्च स्तर के अनुकूलन और हेरफेर में आसानी प्रदान करता है।

निम्न उदाहरण, TStringList ऑब्जेक्ट को स्ट्रिंग्स, सॉर्ट करना, पुनर्प्राप्त करना और मुक्त करना, निर्माण को दर्शाता है।

procedure StringListDemo;
var 
   MyStringList: TStringList;
   i: Integer;

Begin

   //Create the object
   MyStringList := TStringList.Create();
   try
      //Add items
      MyStringList.Add('Zebra');
      MyStringList.Add('Elephant');
      MyStringList.Add('Tiger');

      //Sort in the ascending order
      MyStringList.Sort;

      //Output 
      for i:=0 to MyStringList.Count - 1 do
        WriteLn(MyStringList[i]);
   finally
      //Destroy the object
      MyStringList.Free;
   end;
end;

TStringList में स्ट्रिंग हेरफेर, सॉर्टिंग, इंडेक्सिंग, की-वैल्यू पेयरिंग और सीमांकक पृथक्करण सहित कई उपयोगकर्ता मामले हैं।

की-वैल्यू पेयरिंग

की-वैल्यू जोड़े को स्टोर करने के लिए आप एक TStringList का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप सेटिंग्स को स्टोर करना चाहते हैं तो यह उपयोगी हो सकता है। सेटिंग्स में एक कुंजी (सेटिंग की पहचानकर्ता) और मान होता है। प्रत्येक की-वैल्यू जोड़ी कीरिंग में एक पंक्ति में की = वैल्यू फॉर्मेट में स्टोर की जाती है।

procedure Demo(const FileName: string = '');
var
   SL: TStringList;
   i: Integer;
begin
     SL:= TStringList.Create;
     try
        //Adding a Key-Value pair can be done this way
        SL.Values['FirstName']:= 'John';   //Key is 'FirstName', Value is 'John'
        SL.Values['LastName']:= 'Doe';   //Key is 'LastName', Value is 'Doe'

        //or this way
        SL.Add('City=Berlin');  //Key ist 'City', Value is 'Berlin'

        //you can get the key of a given Index
        IF SL.Names[0] = 'FirstName' THEN
         begin
              //and change the key at an index
              SL.Names[0]:= '1stName';  //Key is now "1stName", Value remains "John"
         end; 
      
        //you can get the value of a key
        s:= SL.Values['City']; //s now is set to 'Berlin'

        //and overwrite a value 
        SL.Values['City']:= 'New York';

        //if desired, it can be saved to an file
        IF (FileName <> '') THEN
         begin
              SL.SaveToFile(FileName);
         end;
     finally
        SL.Free;
     end;
end;

इस उदाहरण में, स्ट्रिंगर के नष्ट होने से पहले निम्न सामग्री है:

1stName=John
LastName=Doe
City=New York

प्रदर्शन पर ध्यान दें

हुड के तहत TStringList सभी मदों के माध्यम से सीधे लूपिंग द्वारा महत्वपूर्ण खोज करता है, हर आइटम के अंदर विभाजक की खोज करता है और दिए गए कुंजी के खिलाफ नाम भाग की तुलना करता है। यह कहने की ज़रूरत नहीं है कि यह प्रदर्शन पर बहुत अधिक प्रभाव डालता है, इसलिए इस तंत्र का उपयोग केवल गैर-महत्वपूर्ण, शायद ही दोहराया स्थानों में किया जाना चाहिए। ऐसे मामलों में जहां प्रदर्शन मामलों, एक का उपयोग करना चाहिए TDictionary<TKey,TValue> से System.Generics.Collections कि औजार हैश तालिका खोज या हल कर में कुंजी रखने के लिए TStringList के रूप में जमा मूल्यों के साथ Object इस प्रकार द्विआधारी खोज एल्गोरिथ्म का उपयोग -s।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow