28623

Работа со строками Delphi

Доклад

Информатика, кибернетика и программирование

С помощью операции конкатенации одна строка присоединяется к другой:var S S1 S2: String;begin S:=S1S2;end; Результирующая строка S будет суммой двух слагаемых строк. Длина строки то есть количество символов в строке возвращается встроенной функцией function LengthS: String: Integer; Delphi работает со строками типа String в котором длина строки записывается в начале строки перед первым символом. То есть если:S:='Строка типа String';то S[1] символ 'С' S[2] символ 'т' последний символ в строке S[LengthS] равный 'g'....

Русский

2013-08-20

26.31 KB

10 чел.

Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Система предоставляет весь спектр необходимых функций для работы со строками Delphi и преобразования строк Delphi в необходимые форматы:

  1.  числовой формат, целый и дробный с плавающей точкой;
  2.  формат времени, даты, даты-времени;
  3.  преобразование символов к верхнему или нижнему регистру;
  4.  сравнение строк, поиск в строке и копирование подстроки;
    и многие другие...

   Непосредственно сами строки 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); 
//после запятой - длинная последовательность цифр
  N:=Pos(',', S); 
//позиция запятой в строке
  N:=N+Count; 
//вычисляем длину строки с нужным количеством знаков после запятой
  Result:=Copy(S, 1, N);
end;

   В комментариях Андрей предложил поправку в этой функции. Дело в том, что 
разделитель целой и дробной частей на разных компьютерах может быть и ',' и '.' - зависит от локальных настроек. Для учёта этого в Delphi существует встроенная константа DecimalSeparator типа Char, принимающая значение символа-разделителя целой и дробной частей. Соответственно, оператор

  N:=Pos(',', S); //позиция запятой в строке

будет выглядеть так:

  N:=Pos(DecimalSeparator, S);

   Или вот, к примеру, текст модуля, обеспечивающего 
ввод в компонент Edit только чисел.


 

А также другие работы, которые могут Вас заинтересовать

45372. Многообразие форм организации обучения в школе. Психолого-педагогические требования к современному уроку 52.5 KB
  Многообразие форм организации обучения в школе. План Формы организации обучения. Критерии выбора форм организации обучения. Общие формы обучения Фронтальная форма Групповая Парная Индивидуальная.
45373. Педагогическая деятельность и педагогические взгляды В.А.Сухомлинского 38.5 KB
  Нравственное воспитание 6. Воспитание потребностей культура желаний 7. Трудовое воспитание 8. Другие идеи воспитание без наказаний зубрежка основа на эмоциональночувственной сфере 3 составные части воспитательного процесса.
45374. Место и роль государства в политической системе общества 47.01 KB
  Такая ситуация не может не влиять на природу действующих законов и подза конных актов которые порой могут между собой находиться в противоречии. Отсюда систематизация это упорядочение нормативных актов приведение их в определённую систему. Выделяют такие виды систематизации как: 1 инкорпорация форма систематизации путём объединения нормативных актов без изменения их со держания в сборник где каждый из актов сохраняет своё самостоятельное юридическое значение. На неофициальные инкорпоративные материалы нельзя ссылаться в процессе...
45375. Правовое государство: понятие и признаки 50.64 KB
  Основоположник античной политической науки Аристотель обосновал идею господства права и правовой законности а также идею права как критерия справедливости. Появляется теория разделения властей прав человека первое представление о законности. принципы и юридические гарантии законности Для начала следует отметить что законность это политикоправовое явление которое характеризует процесс совершенствования государственноправовой формы организации общества путем строгого и неуклонного соблюдения и исполнения действующего...
45376. Соотношение гражданского общества и государства 54.37 KB
  соотношение гражданского общества и государства Гражданское общество и государство представляют собой понятия которые отражают различные стороны жизни общества и противостоят друг другу. Без зрелого гражданского общества невозможно создание правового демократического государства поскольку именно сознательные свободные граждане способны формировать наиболее рациональные формы человеческого общежития. Соотношение гражданского общества и государства характеризуется тем что их нельзя ни отождествлять ни противопоставлять друг другу тем более...
45377. Исторические предпосылки возникновения права 57.96 KB
  Есть лишь отношения объективно требующие или не требую щие правового опосредования. Лишь в отдельных случаях субъект может не знать что стал участником правового отношения например оказавшись наследником по закону после смерти родственника проживавшего в другом городе. Механизм правового регулирования: понятие структура стадии процесса Право как инструмент социального управления призвано упорядочивать общественные отношения обеспе чивая реализацию позитивных интересов субъектов. Каждый из этапов и юридических элементов правового...
45378. ПОНЯТИЕ, ПРИЗНАКИ И СУЩНОСТЬ ПРАВА 43.74 KB
  Ценность права выражается в том что оно прежде всего выступает средством: − регулирования общественных отношений придаёт действиям людей согласованность упорядоченность уверенность; − защиты существующего общественного строя устанавливает меры юридической ответственности за общественно опасные и вредные деяния; − обновления общества фактором его прогресса содействует развитию тех социальных связей в которых заинтересовано общество; − решения глобальных проблем современности оборонных экологических и т. Эффективность правового...
45379. Социальное регулирование. Понятие, функции и виды социальных норм 64.66 KB
  Место и роль права в системе социального регулирования. Отличие права от других нормативных систем. При обсуждении роли права в системе социального нормативного регулирования значение имеют нормы третьей и четвертой группы в литературе именно их принято квалифицировать как социальные нормы. Именно в этих процессах доминирующие в обществе идеи права и правовые представления переводятся в форму юридических правил норм общего действия.
45380. Соотношение права и морали 51.65 KB
  соотношение права и морали. Единство права и морали заключается в следующем: право и мораль являются универсальными регуляторами поведения людей имеют способность проникать в различные области общественной жизни; право и мораль являются многомерными образованиями имеющими сложную структуру которая состоит из одинаковых и взаимодействующих между собой элементов; право и мораль действуют в едином поле социальных отношений; право и мораль служат общей цели совершенствованию и упорядочению общественной жизни...