русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Список строк Delphi StringList


Дата добавления: 2013-12-24; просмотров: 2263; Нарушение авторских прав


Функции преобразования в числовой формат и обратно

Выполняя вычисления, используем для ввода данных и отображения результатов следующие функции, работающие со строками Delphi:

функция IntToStr(N: Integer): String Преобразует целое число N в строку.
функция StrToInt(S: String): Integer Преобразует строку S в целое число.
функция FloatToStr(X: Extended): String Преобразует число с плавающей точкой X в строку.
функция StrToFloat(S: String): Extended Преобразует строку S в число с плавающей точкой.

Следующие функции работают с параметрами возвращаемой строки:

функция AnsiLowerCase(const S: String): String Возвращает строку S, преобразованную к нижнему регистру.
функция AnsiUpperCase(const S: String): String Возвращает строку S, преобразованную к верхнему регистру.
функция Trim(const S: String): String Удаляет из строки S начальные и завершающие пробелы и управляющие символы.
функция TrimLeft(const S: String): String Удаляет из строки S начальные пробелы и управляющие символы.
функция TrimRight(const S: String): String Удаляет из строки S завершающие пробелы и управляющие символы.

Следующие функции сравнивают две строки между собой:

функция AnsiCompareStr(const S1, S2: String): Integer Сравнивает две строки S1 и S2 с учётом регистра символов. Возвращает значение <0 если S1<S2, 0 если S1=S2, >0 если S1>S2
функция AnsiCompareText(const S1, S2: String): Integer Сравнивает две строки S1 и S2 без учёта регистра символов. Возвращает значение <0 если S1<S2, 0 если S1=S2, >0 если S1>S2

Помимо прочего, функцию copy можно использовать для вывода нецелого числа с нужным количеством цифр после запятой. Для этого, сначала получаем строку из числа формата Real, затем находим функцией Pos позицию запятой в этой строке, прибавляем нужное количество и копируем в результат это количество символов. Вот готовая функция:



 

function RealToStr(X: Real; Count: Integer): String; //Count - количество цифр после запятойvar S: String; N: Integer;begin S:=FloatToStr(X); //после запятой - длинная последовательность цифр N:=Pos(',', S); //позиция запятой в строке N:=N+Count; //вычисляем длину строки с нужным количеством знаков после запятой Result:=Copy(S, 1, N);end;

Список строк Delphi TStringList - это структура данных, напоминающая компонент ListBox, но не визуальная, а просто хранящая в памяти и имеющая свойства и методы для работы со строками типа TString.

Для работы со списком строк типа TStringList его сначала необходимо создать с помощью конструктора - Create:

var StrList: TStringList;begin StrList:=TStringList.Create;

Теперь нужно описать способ хранения строк в списке. Список строк типа TStringList может сортировать добавляемые строки или хранить без сортировки, а также может игнорировать попытки добавления новой строки при наличии уже сохранённого дубликата:

StrList.Sorted:=True; //True - сортировать, False - не сортировать StrList.Duplicates:=dupIgnore; //dupAccept - сохранять дубликаты (значение по умолчанию), dupIgnore - игнорировать, dupError - вызвать сообщение об ошибке

Теперь можно добавить в список строки типа TString:

StrList.Add('Новая строка'); //Добавление в конец списка (или в порядке сортировки). Возвращается индекс строки StrList.Insert(Index, 'Новая строка'); //Строка добавляется на позицию с номером Index. Если список отсортирован, то возникает исключительная ситуация.Удалить строку: StrList.Delete(Index); // Удаление строки с номером Index;Количество строк в списке: N:=StrList.Count;Доступ к строке с номером Index: Str:=StrList[Index];Index отсчитывается от 0, поэтому номер последней строки: Last:=StrList.Count-1;Очищаем список строк: StrList.Clear;Если список отсортирован, есть метод для поиска: StrList.Find(S, Index); // В случае удачного поиска возвращает True, и индекс строки S в переменной IndexВ конце работы со списком его необходимо удалить из памяти: StrList.Free;end;

Собственно, для меня список типа TStringList ценен именно возможностью обнаруживать дубликаты строк. Как узнать, что строка уже содержится в списке? Вот алгоритм:

  1. Запретить списку запись дубликатов. Это делается один раз, при создании списка.
  2. Сохранить в переменной количество строк в списке.
  3. Попробовать записать новую строку.
  4. Опять подсчитать количество строк в списке.
  5. Если оно совпадёт с количеством перед записью, то такая строка в списке уже есть!

Без такой возможности пришлось бы в цикле перебирать и сравнивать с искомой все строки в списке.

Строковый тип PChar –Эта строка работает совершенно иначе, чем String. Строка String представляет собой массив символов, в нулевом элементе которого содержится количество байт, отводимых под эту строку. А переменная типа PChar – это не сама строка, а указатель на начало строки, то есть переменная указывает на первый символ строки в памяти компьютера. А где же тогда PChar хранит количество байт в строке?! А нигде! Мы уже говорили о таблице символов ANSI, и выяснили, что нулевой символ – пустой. Вот последний символ PChar как раз и хранит этот символ, и компьютер, найдя его, считает, что строка окончена.

Со строками PChar работать очень неудобно, однако нам придется это делать, когда мы будем работать с функциями WinAPI напрямую. Функции WinAPI – это функции самой Windows, а не Delphi. Однако Delphi позволяет использовать их. Иногда это бывает необходимо, например, когда средств Delphi недостаточно для выполнения намеченной задачи. Использование таких функций не всегда удобно, однако они выполняются процессором намного быстрее, так как содержатся в самой операционной системе.

 



<== предыдущая лекция | следующая лекция ==>
Структурированные типы данных. Строки | Структура SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.186 сек.