Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Использование PosEx взамен Pos

Delphi , Синтаксис , Текст и Строки

Использование PosEx взамен Pos

В Delphi 7 в модуле StrUtils внесены некоторые изменения.
Есть новая функция: PosEx.
 
Обьявление этих функций:
 
Code:
Function Pos(Substr: String; S: String): Integer;
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer;
 
Новая функция PosEx, позволяет указать начальную позицию поиска внутри строки, что избавит вас от необходимости изменения исходной строки. Незабудьте указать модуль StrUtils.
 
Ниже приведена реализация функции в модуле StrUtils (если вы используете более старшую версию среди разработки вы сможете сами добавить этот код и использовать его вместо функции Pos):
 
Code:
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer;
var
I,X: Integer;
Len, LenSubStr: Integer;
begin
If Offset = 1 Then
   Result := Pos(SubStr, S)
Else
begin
   I := Offset;
   LenSubStr := Length(SubStr);
   Len := Length(S) - LenSubStr + 1;
   While I <= Len Do
   begin
     If S[I] = SubStr[1] Then
     begin
       X := 1;
       While (X < LenSubStr) And (S[I + X] = SubStr[X + 1]) Do
         Inc(X);
       If (X = LenSubStr) Then
       begin
         Result := I;
         Exit;
       End;
     End;
     Inc(I);
   End;
   Result := 0;
End;
End;
Автор RoboSol Взято из http://forum.sources.ru

Статья Использование PosEx взамен Pos раздела Синтаксис Текст и Строки может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


:: 2015-03-09 17:01:06 :: re:Использование PosEx взамен Pos

пользователь: юрий.

у меня в дельфи 7 ищет как обычная Pos...
в тексте есть 2 слова 'строка'
PosEx('строка',Memo1.Text,2) и находит
только первое слово
третий параметр я так понимаю для того чтобы найти
второе вхождение


:: 2015-12-22 20:06:46 :: re:Использование PosEx взамен Pos

пользователь: Борис.

// поиск слова по чату
procedure TMess_form1.search_text(ss: string; pos_s:integer=1);
var
Find: string;
I: integer;
begin
Find := AnsiLowerCase(ss);
for I := 0 to Memo2.Lines.Count - 1 do
if PosEx(AnsiLowerCase(Find), AnsiLowerCase(Memo2.Lines.Text),pos_s) 0 then
begin
Memo2.SetFocus();
Memo2.SelStart := PosEx(AnsiLowerCase(Find), AnsiLowerCase(Memo2.Lines.Text),pos_s)-1;
Memo2.SelLength := length(Find);

end;
end;
// поиск кнопка
procedure TMess_form1.Button6Click(Sender: TObject);
var ii:integer;
begin
ii:=Memo2.SelStart + Memo2.SelLength+1;
Memo2.SelStart := 0;
Memo2.SelLength :=0;

search_text(Edit2.Text,ii);
end;


:: 2016-01-02 10:26:17 :: re:Использование PosEx взамен Pos

пользователь: Аркадий.

Ничего не понял.
Как сделать чтоб искалка искала слово - а, слово - но, или слово-предлог - в?
А не букву а, букву в, сочетание но...итд.


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Текст и Строки ::


реклама

:: https://filigranika.ru заказать шкафы на балкон.


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
21.02.2020 11:19:14/0.036326885223389/0