Недавно добавленные исходники

•  Animation Loaders  923

•  DeLiKaTeS Tetris (Тетрис)  5 869

•  TDictionary Custom Sort  7 815

•  Fast Watermark Sources  7 489

•  3D Designer  10 724

•  Sik Screen Capture  8 041

•  Patch Maker  8 249

•  Айболит (remote control)  8 300

•  ListBox Drag & Drop  7 118

•  Доска для игры Реверси  100 853

•  Графические эффекты  8 366

•  Рисование по маске  7 743

•  Перетаскивание изображений  6 343

•  Canvas Drawing  6 712

•  Рисование Луны  6 646

•  Поворот изображения  5 780

•  Рисование стержней  4 721

•  Paint on Shape  3 428

•  Генератор кроссвордов  4 410

•  Головоломка Paletto  3 554

•  Теорема Монжа об окружностях  4 354

•  Пазл Numbrix  2 819

•  Заборы и коммивояжеры  3 771

•  Игра HIP  2 540

•  Игра Go (Го)  2 539

•  Симулятор лифта  2 935

•  Программа укладки плитки  2 361

•  Генератор лабиринта  3 112

•  Проверка числового ввода  2 597

•  HEX View  3 001

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Поиск N-ого вхождения подстроки в строку



Автор: Panov

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Поиск N-ого вхождения подстроки в строку

Зависимости: SysUtils
Автор:       panov, panov@hotbox.ru, Екатеринбург
Copyright:   panov
Дата:        19 апреля 2002 г.
***************************************************** }

function SearchString(const FindStr, SourceString: string; Num: Integer):
  Integer;
var
  FirstSym: PChar; //Ссылка на первый символ

  function MyPos(const FindStr, SourceString: PChar; Num: Integer): PChar;
  begin
    Result := AnsiStrPos(SourceString, FindStr);
      //Поиск вхождения подстроки в строку
    if (Result = nil) then
      Exit; //Подстрока не найдена
    Inc(Result); //Смещаем указатель на следующий символ
    if Num = 1 then
      Exit; //Если нужно первое вхождение - заканчиваем
    if num > 1 then
      Result := MyPos(FindStr, Result, num - 1);
    //Рекурсивный поиск следующего вхождения
  end;

begin
  FirstSym := PChar(SourceString);
  //Присваиваем адрес первого символа исходной строки
  Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym;
  //Номер позиции в строке
  if Result < 0 then
    Result := 0; //Возвращаем номер позиции
end;

Пример использования:

var
  StrF, StrSrc: string;
  n: Integer;
begin
  ...
  StrF := 'стр';
  StrSrc := 'Поиск подстроки в строке';
  n := SearchString(StrF, StrSrc, 2); //n будет равна 19
end;




Похожие по теме исходники

Поисковик

Поиск символа

Поиск файлов

Поиск открытых файлов

 

Findup (поиск дублей)

Дейкстра: поиск кратчайшего пути

Аналоговые часы

Огонь

 

Огонь v2

Моделирование кривошипного механизма

Weather Info (погода)

Weather Info 2 (информация о погоде)

 

Курс валют / погода

Синтез кривошипно-ползунного механизма

Матрица транзитивного замыкания




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте