TReplaceFlags — Тип Delphi

TReplaceFlags — Тип Delphi

Для работы проги в 5 дельфи нужна функция AnsiReplaceStr подкиньте исходник если не сложно.
Заранее благодарен :)

function AnsiReplaceStr(const AText, AFromText, AToText: string): string;
begin
Result := StringReplace(AText, AFromText, AToText, [rfReplaceAll]);
end;

function StringReplace(const S, OldPattern, NewPattern: string;
Flags: TReplaceFlags): string;
var
SearchStr, Patt, NewStr: string;
Offset: Integer;
begin
if rfIgnoreCase in Flags then
begin
SearchStr := AnsiUpperCase(S);
Patt := AnsiUpperCase(OldPattern);
end else
begin
SearchStr := S;
Patt := OldPattern;
end;
NewStr := S;
Result := «»;
while SearchStr <> «» do
begin
Offset := AnsiPos(Patt, SearchStr);
if Offset = 0 then
begin
Result := Result + NewStr;
Break;
end;
Result := Result + Copy(NewStr, 1, Offset — 1) + NewPattern;
NewStr := Copy(NewStr, Offset + Length(OldPattern), MaxInt);
if not (rfReplaceAll in Flags) then
begin
Result := Result + NewStr;
Break;
end;
SearchStr := Copy(SearchStr, Offset + Length(Patt), MaxInt);
end;
end;

А как описан тип TReplaceFlags?

StringReplace — эта функция в Delphi 5 есть, читай справку:))

type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Точно есть :) Я стормозил :(

Может еще дадите исходники posex и midstr??

А в QString функция замены работает быстрее-намного быстрее.

TReplaceFlags — Тип Delphi

type TReplaceFlags = set of ( rfReplaceAll, rfIgnoreCase );

Описание
Функция возвращает строку, полученную из строки S заменой в ней подстроки OldSubstr на подстроку NewSubstr. Строка может содержать многобайтовые символы. Если в параметр Flags включено значение rfReplaceAll, то функция заменяет все подстроки OldSubstr входящие в строку S, иначе заменяется только первое вхождение подстроки. Для того чтобы функция проводила замену без учета регистра, необходимо в параметр Flags включить значение rfIgnoreCase.

Пример
var
S: string;
Flags: TReplaceFlags;
begin
Flags:= [ rfReplaceAll, rfIgnoreCase ];
S:= ‘МАМА — глава семьи’;
S:= StringReplace( S, ‘МА’, ‘ПА’, Flags);
MessageDlg( S, mtInformation, [mbOk], 0);
end;

TReplaceFlags — Тип Delphi

type TReplaceFlags = set of ( rfReplaceAll, rfIgnoreCase );

Описание
Функция возвращает строку, полученную из строки S заменой в ней подстроки OldSubstr на подстроку NewSubstr. Строка может содержать многобайтовые символы. Если в параметр Flags включено значение rfReplaceAll, то функция заменяет все подстроки OldSubstr входящие в строку S, иначе заменяется только первое вхождение подстроки. Для того чтобы функция проводила замену без учета регистра, необходимо в параметр Flags включить значение rfIgnoreCase.

Пример
var
S: string;
Flags: TReplaceFlags;
begin
Flags:= [ rfReplaceAll, rfIgnoreCase ];
S:= ‘МАМА — глава семьи’;
S:= StringReplace( S, ‘МА’, ‘ПА’, Flags);
MessageDlg( S, mtInformation, [mbOk], 0);
end;

ASD-SOFT

Программирование. Теория и практика.

TStringHelper — помощник при работе с типом String в Delphi.

Здравствуйте уважаемые коллеги!
TStringHelper, как и помощники в общем, появились в Delphi начиная с версии XE3. Ниже приведено описание и примеры использования методов и свойств помощника TStringHelper.

Empty

Возвращает пустую строку.

Create(C: Char; Count: Integer)

Создает строку из символов C количеством Count;

Create(const Value: array of Char)

Создает строку из переданного массива символов Value.

Create(const Value: array of Char; StartIndex: Integer; Length: Integer)

Создает строку из массива символов Value начиная с позиции StartIndex количеством Length символов.

Compare(const StrA: string; const StrB: string)

Сравнение двух строк StrA и StrB с учетом регистра. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean)

Сравнение двух строк StrA и StrB с учетом, IgnoreCase установле в False, или без учета регистра, IgnoreCase установлен в True. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов с учетом регистра. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов. С учетом, IgnoreCase устанавливается в False, или без учета регистра, IgnoreCase устанавливается в True. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

CompareOrdinal(const strA: string; const strB: string)

Сравнивает строку StrA со строкой StrB по кодам символов.

CompareOrdinal(const strA: string; indexA: Integer; const strB: string; indexB: Integer; length: Integer)

Сравнивает по кодам символов строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов.

CompareTo(const strB: string)

Сравнивает текущую строку со строкой StrB. Если Текущая строка StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Contains(const Value: string)

Если текущая строка содержит строку Value, то вернет True иначе False. Учитывается регистр.

Copy(const Str: string)

Возвращает строку Str.

CopyTo(SourceIndex: Integer; var destination: array of Char; DestinationIndex: Integer; Count: Integer)

Копирует текущую строку, начиная с символа SourceIndex в массив символов destination, начиная с DestinationIndex в количестве Count символов.

EndsText(const ASubText, AText: string)

Сравнивает окончание строки AText со строкой ASubText. При совпадении возвращает True.

EndsWith(const Value: string)

Сравнивает окончание текущей строки со строкой Value с учетом регистра. При совпадении возвращает True.

EndsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает окончание текущей строки со строкой Value. IgnoreCase = True — без учета регистра, IgnoreCase = False — с учетом регистра. При совпадении возвращает True.

Equals(const Value: string)

Сравнивает текущую строку со строкой Value с учетом регистра. При совпадении возвращает True.

Equals(const a: string; const b: string)

Сравнивает строку a со строкой b с учетом регистра. При совпадении возвращает True.

Format(const Format: string; const args: array of const)

Подставляет значения в форматированную строку Format из массива args.

GetHashCode

В данный момент не работает. Возвращает -1.

IndexOf(value: Char)

Возвращает позицию символа value в текущей строке. Если символ не найден, вернет -1;

IndexOf(const Value: string)

Возвращает позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

IndexOf(Value: Char; StartIndex: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Если символ не найден, вернет -1;

IndexOf(const Value: string; StartIndex: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex. Если строка не найдена, вернет -1.

IndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Сравнивает Count сиволов. Если символ не найден, вернет -1.

IndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex, включая Count символов. Если строка не найдена, вернет -1.

IndexOfAny(const AnyOf: array of Char)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке. Если ни один символ не найден, то вернет -1.

IndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке, начиная с позиции StartIndex. Если ни один символ не найден, то вернет -1.

IndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения любого символа из массива AnyOf в текущей строке, начиная с позиции StartIndex, проверяя Count символов. Если ни один символ не найден, то вернет -1.

Insert(StartIndex: Integer; const Value: string)

Вставляет строку Value в текущую строку начиная с позиции StartIndex.

IsDelimiter(const Delimiters: string; Index: Integer)

Проверяет: присутствует ли текущая строка в строке Delimiters начиная с позиции Index.

IsEmpty

Возвращает True, если Текущая строка пустая.

IsNullOrEmpty(const Value: string)

Возвращает True, если строка Value пустая.

IsNullOrWhiteSpace(const Value: string)

Не работает. Возвращает False.

Join(const Separator: string; const values: array of const)

Не работает. Возвращает пустую строку.

Илон Маск рекомендует:  Блок с градиентом
Join(const Separator: string; const Values: array of string)

Объединяет значения из массива Values в строку используя разделитель Separator.

Join(const Separator: string; const Values: IEnumerable )

Не работает. Возвращает пустую строку.

Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer)

Объединяет значения из массива Values, начиная с позиции StartIndex количеством Count в строку используя разделитель Separator.

LastDelimiter(const Delims: string)

Возвращает последнюю совпавшую позицию строки Delims с текущей строкой. Если совпадений не найдено, то вернет -1.

LastIndexOf(Value: Char)

Возвращает последнюю позицию символа Value в текущей строке. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string)

Возвращает последнюю позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

LastIndexOf(Value: Char; StartIndex: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string; StartIndex: Integer)

Возвращает последнюю позицию совпадения строки Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если строка не найдена, вернет -1.

LastIndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию строки Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке до позиции StartIndex. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf, начиная с позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

PadLeft(TotalW >Дополняет текущую строку пробелами до длинны TotalWidth слева.
PadLeft(TotalW >Дополняет текущую строку символами PaddingChar до длинны TotalWidth слева.
PadRight(TotalW >Дополняет текущую строку пробелами до длинны TotalWidth справа.
PadRight(TotalW >Дополняет текущую строку символами PaddingChar до длинны TotalWidth справа.
Remove(StartIndex: Integer)

Удаляет символы из текущей строки начиная с позиции StartIndex и до конца.

Remove(StartIndex: Integer; Count: Integer)

Удаляет Count символов из текущей строки начиная с позиции StartIndex.

Replace(OldChar: Char; NewChar: Char)

Заменяет все символы OldChar в текущей строке на симвопл NewChar.

Replace(OldChar: Char; NewChar: Char; ReplaceFlags: TReplaceFlags)

Заменяет символы OldChar в текущей строке на симвопл NewChar, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

Replace(const OldValue: string; const NewValue: string)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue.

Replace(const OldValue: string; const NewValue: string; ReplaceFlags: TReplaceFlags)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

Split(const Separator: array of Char)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей символы из массива Separator.

Split(const Separator: array of Char; Count: Integer)

Разделяет текущую строку на массив строк TArray количеством Count, используя в качетсве разделителей символы из массива Separator.

Split(const Separator: array of Char; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of string; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray количеством Count, используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

StartsWith(const Value: string)

Сравнивает начало текущей строки со строкой Value. Возвращает True при совпадении.

StartsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает начало текущей строки со строкой Value. С учетом регистра при IgnoreCase = False, и без учета при IgnoreCase = True. Возвращает True при совпадении.

Substring(StartIndex: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex и до конца.

Substring(StartIndex: Integer; Length: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex, количеством Length символов.

ToCharArray

Преобразует текущую строку в массив символов TArray .

ToCharArray(StartIndex: Integer; Length: Integer)

Преобразует текущую строку, начиная с позиции StartIndex, количеством Length в массив символов TArray .

ToLower

Переводит все символы текущей строки в нижний регистр.

ToLowerInvariant

Переводит все символы текущей строки в нижний регистр используя UTF-16.

ToUpper

Переводит все символы текущей строки в верхний регистр.

ToUpperInvariant

Переводит все символы текущей строки в верхний регистр используя UTF-16.

Trim

Удаляет пробелы из начала и конца текущей строки.

Trim(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала и конца текущей строки.

TrimEnd(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из конца текущей строки.

TrimStart(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала текущей строки.

Chars[Index: Integer]

Свойство вернет символ с позицией Index из текущей строки.

TReplaceFlags — Тип Delphi

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

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

Непосредственно сами строки Delphi поддерживают единственную операцию, так называемую операцию конкатенации, то есть присоединения. Несмотря на «научное» название, операция конкатенации выполняет очень простую процедуру. С помощью операции конкатенации одна строка присоединяется к другой:

Результирующая строка 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
функция AnsiCompareText(const S1, S2: String): Integer
Сравнивает две строки 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 только чисел.

TReplaceFlags — Тип Delphi

Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams .

Репутация: нет
Всего: 20

Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64

[/B], ‘); return false;» title=»Вставить ник в поле ввода»>
Дата 14.5.2004, 18:34 (ссылка) | (нет голосов) Загрузка . ‘, ‘14.5.2004, 18:34’, 155614);»>

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Vit
Дата 14.5.2004, 18:49 (ссылка) | (нет голосов) Загрузка .
Код
with TStringList.create do
try
LoadFromFile(‘C:\MyFile.html’);
text:=StringReplace(text, ‘http://host.ru’,’http://myhost.ru’, [rfReplaceAll]);
SaveToFile(‘C:\MyFile.html’);
finally
free;
end;

Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams .

Репутация: нет
Всего: 20

Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Borland_Delphi_6
Дата 14.5.2004, 20:48 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.8.2004

Репутация: нет
Всего: нет

CacheY
Дата 10.6.2005, 15:40 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Завсегдатай
Сообщений: 1513
Регистрация: 13.2.2005
Где: Kazakhstan, Almat y

Репутация: нет
Всего: 32

Негодяй
Дата 10.6.2005, 15:51 (ссылка) | (нет голосов) Загрузка .
Цитата(CacheY @ 10.6.2005, 15:40)
многострочную замену текста в Memo

У Memo должно быть свойтво Strings. И делаешь тоже самое что и в предудущих ответах было написано.

Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.8.2004

Репутация: нет
Всего: нет

CacheY
Дата 10.6.2005, 20:58 (ссылка) | (нет голосов) Загрузка .
Цитата
Цитата(CacheY @ 10.6.2005, 15:40)
многострочную замену текста в Memo

У Memo должно быть свойтво Strings. И делаешь тоже самое что и в предудущих ответах было написано.

хм. чтото не пойму, что именно нужно сделать.
как бы феня в чем — пишу текстовый редактор, текст вешается на Memo, надо сделать многострочную замену текста, тоесть чтобы можно было искать и заменять текст не по одной строчке, а по нескольку строк

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Memo1.text:=StringReplace(memo1.text, ‘строка1′,’строка2’, [rfReplaceAll]);

Вообще есть такой чудный пакет компонентов SynEdit — там очень продвинутое мемо которое имеет очень мощные возможности для поиска и замены с множеством опций, в плодь до регулярных выражений.

Vit
Дата 10.6.2005, 21:47 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.8.2004

Репутация: нет
Всего: нет

CacheY
Дата 10.6.2005, 22:07 (ссылка) | (нет голосов) Загрузка .
Цитата(Vit @ 10.6.2005, 21:47)
Memo1.text:=StringReplace(memo1.text, ‘строка1′,’строка2’, [rfReplaceAll]);

Вообще есть такой чудный пакет компонентов SynEdit — там очень продвинутое мемо которое имеет очень мощные возможности для поиска и замены с множеством опций, в плодь до регулярных выражений.

а что такое memo1.text, тот что в скобках.

Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133

Poseidon
Дата 11.6.2005, 02:05 (ссылка) | (нет голосов) Загрузка .
Цитата(CacheY @ 10.6.2005, 22:07)
а что такое memo1.text, тот что в скобках.

Текст, в катором ты хочешь сделать замену ‘строка1’ на ‘строка2’. Результатом функции будет текст, с уже замененными участками, каторый передается обратно в Мемо.

Профиль
Группа: Модератор
Сообщений: 18483
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329

Akella
Дата 11.6.2005, 08:27 (ссылка) | (нет голосов) Загрузка .
Код
StringReplace(где искать, старое значение, новое значение, [rfReplaceAll, rfIgnoreCase]);

rfReplaceAll — заменять по всему тексту (первый параметр)
rfIgnoreCase — не учитывать регистр символов

Добавлено @ 08:28
Цитата из справки

Цитата
TReplaceFlags indicates how to perform a search-and-replace operation

type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

typedef Set TReplaceFlags;

TReplaceFlags is a set of flags that govern how to locate and replace a substring within a string. This set can contain the following values:

rfReplaceAll Replace all occurrences. If this flag is not present, only the first occurrence of the target substring is replaced.
rfIgnoreCase Match occurrences of the substring case-insensitively. If this flag is not present, only case-sensitive matches are considered.

Google
Дата 12.11.2020, 00:33 (ссылка)

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

Delphi: Any StringReplaceW or W > Ask Question

Are there any wide-string manipulation implementations out there?

3 Answers 3

I generally import the «Microsoft VBScript Regular Expression 5.5» type library and use IRegExp objects.

OP Edit

i like this answer, and i went ahead and wrote a StringReplaceW function using RegEx:

The JEDI project includes JclUnicode.pas, which has WideUpperCase and WidePos, but not StringReplace. The SysUtils.pas StringReplace code isn’t very complicated, so you could easily just copy that and replace string with WideString, AnsiPos with WidePos, and AnsiUpperCase with WideUpperCase and get something functional, if slow.

The TntControls has a set of Wide-version functions.

Not the answer you’re looking for? Browse other questions tagged delphi unicode string delphi-5 or ask your own question.

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.11.35402

TReplaceFlags — Тип Delphi

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

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

Непосредственно сами строки Delphi поддерживают единственную операцию, так называемую операцию конкатенации, то есть присоединения. Несмотря на «научное» название, операция конкатенации выполняет очень простую процедуру. С помощью операции конкатенации одна строка присоединяется к другой:

Результирующая строка 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:

Правила форума «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
функция AnsiCompareText(const S1, S2: String): Integer
Сравнивает две строки 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 только чисел.

Описать свои типы данных в delphi

Posted by Chas under Delphi

видел бывают функции где в фактических параметрах стоит переменная типа работающего только для этой функции. например: DayOfWeek(Date: TDateTime): Integer. где Date это как раз такая переменная. так вот интересует как их создавать?

evg_m
объявление процедуры и типов данных которые она использует

Delphi syntax:
type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

Канал в Telegram

Вы здесь

StringReplace (функция)

Синтаксис функции: StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string

Где:
S – исходная строка;
OldPattern – старый символ или набор символов;
NewPattern – новый символ или набор символов;

procedure TForm1.Button1Click(Sender: TObject);
const str= ‘СъЕшь-ещЕ_этих-сладких_яблочЕк!’ ;
var sMsg:string;
begin
//замена первого найденного символа «-«
sMsg:= ‘Строка до преобразования [‘ +str+ ‘]’ +#13+
‘Строка после одиночной замены «-» [‘ +stringReplace(str, ‘-‘ , ‘ ‘ ,[])+ ‘]’ ;

//замена всех найденных в строке «_»
sMsg:= ‘Строка до преобразования [‘ +str+ ‘]’ +#13+
‘Строка после замены всех «_» пробелами [‘ +stringReplace(str, ‘_’ , ‘ ‘ ,[rfReplaceAll])+ ‘]’ ;

//замена всех «е» и малых и больших (без учета регистра) на ее код в таблице ASCII
//коды малых и больших символов отличаются. В данном примере замена на код «е» в нижнем регистре
sMsg:= ‘Строка до преобразования [‘ +str+ ‘]’ +#13+
‘После замены всех «е» на код символа. Поиск без учета регистра [‘ +
stringReplace(str, ‘е’ ,inttostr(ord( ‘е’ )),[rfReplaceAll,rfIgnoreCase])+ ‘]’ ;

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL