Список строк (TM\_StringList)

> [HTML Version](stringlist.html)

Класс TM\_StringList можно использовать для хранения списка строк. Данный класс обладает следующими свойствами и методами:

| **Метод** | **Описание** |
|------|------|
| function Add(const S: string): Integer; | Добавляет строку S в список |
| procedure Insert(Index: Integer; const S: string); | Добавляет строку S в список в позицию Index |
| procedure Delete(Index: Integer); | Удаляет из списка элемент с указанным индексом |
| procedure Exchange(Index1, Index2: Integer); | Меняет местами элементы в указанных позициях |
| procedure Clear; | Очищает список |
| function IndexOf(const S: string): Integer; | Возвращает индекс строки S в списке. Возвращает -1, если такой строки нет в списке. |
| function Find(const S: string; var Index: Integer): Boolean; | Используется только для отсортированных списков с включенным свойством Sorted. Ищет в списке строку S и возвращает true, если она существует. Индекс строки записывается в переменную Index. |
| procedure Sort; | Сортирует строки в списке |
| procedure LoadFromFile(const AFileName: string; ACodepage: TM\_FileCodePage); | Загружает строки из файла AFileName (с кодировкой [ACodepage](tm_filecodepage.md)) в список |
| procedure SaveToFile(const AFileName: string; ACodepage: TM\_FileCodePage); | Сохраняет содержимое списка в файл AFileName с кодировкой [ACodepage](tm_filecodepage.md) |




| **Свойство** | **Описание** |
|------|------|
| property Sorted: Boolean; | Указывает, должны ли строки в списке автоматически сортироваться. |
| property Duplicates: Byte; | Используется только для отсортированных списков с включенным свойством Sorted. Указывает, можно ли добавлять повторяющиеся строки в список. Допустимые значения: dupIgnore - игнорировать повторяющиеся строки, dupAccept - разрешить повторяющиеся строки, dupError - выдать исключение при попытке добавить повторяющуюся строку. |
| property CaseSensitive: Boolean; | Определяет, следует ли сравнивать строки в списке с учетом регистра. По-умолчанию имеет значение false. |
| property Items\[Index: Integer\]: string; | Возвращает строку с индексом Index из списка. Например myList.Items\[3\] вернёт строку из списка с индексом 3. Это свойство по-умолчанию, поэтому можно использовать короткую запись, например: myList\[3\]. |
| property Count: Integer; | Возвращает количество строк в списке |




**Пример использования**

Допустим нам нужно создать список строк, добавлять в него строки и работать с ними. Тогда можно создать новый [глобальный модуль](globalmodule.md) и объявить в нем список:

````
interface  
  
var  
  myList: TM\_StringList;          // объявляем список с именем myList  
  
implementation  
  
initialization                    // во время запуска проекта  
  myList := TM\_StringList.Create; // создаём список  
  
finalization                // во время выключения проекта  
  FreeAndNil(myList);       // \!\!\! обязательно удаляем список  
  
end.

````
Теперь список myList можно использовать в любом скрипте проекта.

**Пример добавления строк в список**

````
begin  
  myList.Add('привет'); // добавляем строку "привет" в список  
  myList.Add('мир');    // добавляем строку "мир" в список  
end.

````
**Пример поиска в списке**

````
begin  
  if myList.IndexOf("привет") > -1 then  
    Log\_Add('Строка "привет" есть в списке')  
  else  
    Log\_Add('Строка "привет" не найдена списке');  
end.

````
**Пример перебора элементов списка**

````
var  
  I: Integer;  
begin  
  // проходим в цикле по всем элементам списка  
  for I := 0 to myList.Count - 1 do  
  begin  
    if myList\[I\] = "привет" then   // если очередной элемент списка равен "привет", то  
    begin  
      // здесь выполняем какие-то действия  
    end;  
  end;  
end.

````
