수색…


소개

TStringList 는 VCL의 TStrings 클래스의 자손입니다. TStringList는 문자열 목록을 저장하고 조작하는 데 사용할 수 있습니다. 원래 String을 대상으로하지만,이 클래스를 사용하여 모든 유형의 객체를 조작 할 수도 있습니다.

TStringList는 String 목록을 유지할 목적이있는 경우 VCL에서 널리 사용됩니다. TStringList는 높은 수준의 사용자 지정과 손쉬운 조작을 제공하는 다양한 메서드 집합을 지원합니다.

다음 예제에서는 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를 사용하여 키 - 값 쌍을 저장할 수 있습니다. 예를 들어, 설정을 저장하려는 경우 유용 할 수 있습니다. 설정은 키 (설정의 식별자)와 값으로 구성됩니다. 각 키 - 값 쌍은 KeyList의 한 행에 Key = Value 형식으로 저장됩니다.

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;

이 예제에서 StringList는 소멸되기 전에 다음 내용을가집니다.

1stName=John
LastName=Doe
City=New York

성능에 대한 참고 사항

TStringList 모든 항목을 반복적으로 반복하여 모든 항목 내의 구분 기호를 검색하고 이름 부분을 지정된 키와 비교하여 키 검색을 수행합니다. 성능에 큰 영향을 미칠 필요는 없으므로이 메커니즘은 거의 중요하지 않은 거의 반복되지 않는 장소에서만 사용해야합니다. 성능 문제가있는 경우 해시 테이블 검색을 구현하는 System.Generics.Collections TDictionary<TKey,TValue> 를 사용해야하며 정렬 된 TStringList 키를 Object -s로 저장된 값 으로 유지하여 이진 찾기 알고리즘을 사용해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow