Уроки Delphi 
  1.  Первая программа 
  2.  Использование компонентов 
  3.  События Delphi 
  4.  Типы данных Delphi 
  5.  Создание своих типов данных 
  6.  Выражения и операторы 
  7.  Работа с файлами в Delphi 
  8.  Дополнительные формы 
  9.  Подпрограммы в Delphi 
  10. Исключительные ситуации 
  11. Взаимодействие приложения с пользователем 
  12. Указатели в Delphi 
  13. Обзор компонентов 
  14. Работа со строками 
  15. Создание интерфейса 
  16. Графика в Delphi 
  17. Многопоточность в Delphi 
  18. Динамическое создание         компонентов 
Поиск по сайту 
 
 
  
 Это важно: 
   Метод Application.ProcessMessages;
 
  
 Это полезно: 
   Параметр Sender в обработчиках событий;
 
 
 
 
 
 
 
 
 
 
  
Бояться не надо
 
 
  
   | 
  
   | 
  
    Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Система предоставляет весь спектр необходимых функций для работы со строками Delphi и преобразования строк Delphi в необходимые форматы:
 
  - числовой формат, целый и дробный с плавающей точкой;
 
  - формат времени, даты, даты-времени;
 
  - преобразование символов к верхнему или нижнему регистру;
 
  - сравнение строк, поиск в строке и копирование подстроки;
 и многие другие... 
 
   Непосредственно сами строки Delphi поддерживают единственную операцию, так называемую операцию конкатенации, то есть присоединения. Несмотря на "научное" название, операция конкатенации выполняет очень простую процедуру. С помощью операции конкатенации одна строка присоединяется к другой:
  
var S, S1, S2: String; 
begin 
 S:=S1+S2; 
end;
  
   Результирующая строка S будет суммой двух слагаемых строк. Длина строки, то есть количество символов в строке, возвращается встроенной функцией
  
   function Length(S: String): Integer;
  
   Delphi работает со строками типа String, в котором длина строки записывается в начале строки, перед первым символом. Поэтому индекс первого символа в строке не 0, а 1. То есть, если:
  
S:='Строка типа String';
  
то S[1] - символ 'С', S[2] - символ 'т', последний символ в строке - S[Length(S)], равный 'g'.
  
   Однако часто приходится иметь дело со строками типа PChar, которые использует операционая система Windows. В строках типа PChar длина строки определяется специальным символом конца строки - #0. Поэтому для использования функций Windows тип String необходимо предварительно переводить в тип PChar. Преобразование типа String в тип PChar выполняет функция
  
   function PChar(S: String): PChar;
  
   Для полноценной работы со строками Delphi используются следующие стандартные процедуры и функции:
  
Функции преобразования в числовой формат и обратно
Выполняя вычисления, используем для ввода данных и отображения результатов следующие функции, работающие со строками Delphi:
  
  
     функция IntToStr(N: Integer): String  Преобразует целое число N в строку. | 
   
  
     функция StrToInt(S: String): Integer  Преобразует строку S в целое число. | 
   
  
     функция FloatToStr(X: Extended): String  Преобразует число с плавающей точкой X в строку. | 
   
  
     функция StrToFloat(S: String): Extended  Преобразует строку S в число с плавающей точкой. | 
   
  
Процедуры и функции преобразования дат и времени
Сначала собственно функции, предоставляющие информацию о текущих дате и времени:
  
  
     функция Now: TDateTime  Возвращает текущую дату и время. | 
   
  
     функция Date: TDateTime  Возвращает текущую дату. | 
   
  
     функция Time: TDateTime  Возвращает текущее время. | 
   
  
Далее, функции, работающие с составляющими даты и времени (год, месяц, число, день недели, часы, минуты, секунды и даже миллисекунды):
  
  
     функция DayOfWeek(Date: TDateTime): Integer  Возвращает текущий номер дня недели: 1 - воскресенье, 7 - суббота. | 
   
  
     процедура DecodeDate(Date: TDateTime; var Year, Month, Day: Word)  Разбивает дату Date на год - Year, месяц - Month и день - Day. | 
   
  
     процедура DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)  Разбивает время Time на час - Hour, минуты - Min, секунды - Sec и миллисекунды - MSec. | 
   
  
     функция EncodeDate(Year, Month, Day: Word): TDateTime  Объединяет год - Year, месяц - Month и день - Day в значение типа TDateTime. | 
   
  
     функция EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime  Объединяет час - Hour, минуты - Min, секунды - Sec и миллисекунды - MSec в значение типа TDateTime. | 
   
  
Наконец, собственно, функции, переводящие дату и время из формата TDateTime в строчный формат:
  
  
     функция DateTimeToStr(DateTime: TDateTime): String  Преобразует дату и время DateTime в строку. | 
   
  
     функция DateToStr(Date: TDateTime): String  Преобразует дату Date в строку. | 
   
  
     функция TimeToStr(Time: TDateTime): String  Преобразует время Time в строку. | 
   
  
Следующие функции работают с параметрами возвращаемой строки. Функции с приставкой Ansi работают в том числе и с кириллическими символами. Если символы в строках предполагаются исключительно латинские, то можно использовать аналогичные функции, но без приставки Ansi:
  
  
     функция AnsiLowerCase(const S: String): String  Возвращает строку S, преобразованную к нижнему регистру. | 
   
  
     функция AnsiUpperCase(const S: String): String  Возвращает строку S, преобразованную к верхнему регистру. | 
   
  
     функция Length(const S: String): Integer  Возвращает количество символов в строке 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 | 
   
  
Следующие функции осуществляют поиск в текущей строке подстроки, вставляют, удаляют или заменяют подстроку:
  
  
     функция Pos(Substr: String; Str: String): Integer  Возвращает позицию (индекс) первого вхождения Substr в строке Str. Если Substr нет в Str, возвращает 0. | 
   
  
     функция Insert(Source: String; var S: String; Index: Integer): Integer  Вставляет строку Source в строку S, начиная с номера символа, равного Index | 
   
  
     процедура Delete(var S: String; Index, Count: Integer)  Удаляет из строки S подстроку, начинающуюся с номера символа, равного Index, и содержащую до Count символов. | 
   
  
     функция StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): String  Заменяет в строке S подстроку OldPattern на строку NewPattern с учётом флага TReplaceFlags. Для работы с этой функцией нужно создать переменную типа TReplaceFlags - это множество, и включить в него одно или оба значения из следующих: 
   rfReplaceAll - будут заменены все вхождения. Если это значение не будет включено во множество, то будет заменено только первое вхождение; 
   rfIgnoreCase - замена будет без учёта регистра символов. Если это значение не будет включено во множество, то замена будет чувствительна к регистру символов. | 
   
  
Наконец, функция копирования части строки:
  
  
     функция Copy(S: String; Index, Count: Integer): String  Возвращает подстроку строки S, начиная с номера символа, равного Index и содержащую до Count символов. | 
   
  
Помимо прочего, эту функцию можно использовать для вывода нецелого числа с нужным количеством цифр после запятой. Для этого, сначала получаем строку из числа формата Real, затем находим функцией Pos позицию запятой в этой строке, прибавляем нужное количество и копируем в результат это количество символов. Вот готовая функция:
  
function RealToStr(X: Real; Count: Integer): String;//Count - количество цифр после запятой 
var S: String; 
    N: Integer; 
begin 
  S:=FloatToStr(X); //после запятой - длинная последовательность цифр 
//DecimalSeparator - константа, содержащая истинный разделитель целой и дробной  частей числа
  N:=Pos(DecimalSeparator, S); //позиция запятой в строке 
//вычисляем длину строки с нужным количеством знаков после запятой: 
  if N=0//если в строке нет запятой - это целое число, и 
    then N:=Length(S)//тогда просто выводим это число 
    else N:=N+Count;//иначе вычисляем длину строки 
  Result:=Copy(S, 1, N);//копируем часть строки в результат 
end; 
  
   Или вот, к примеру, текст модуля, обеспечивающего ввод в компонент Edit только чисел.
  
   Продолжение. Списки строк, создание и использование
 
 
 
  
 |