Поиск подстроки в строке с заданной позицииDelphi , Синтаксис , Текст и Строки
Автор: Romkin { **** UBPFD *********** by delphibase.endimus.com **** >> S - строка, в которой искать SubStr - образец fromPos - с какой позиции Все на асемблере, принцип простой - ищется первый символ, затем часть строки сравнивается с образцом начиная с этого символа Если образец не найден, возвращает 0 Если найден - номер первого символа вхождения Зависимости: Нету их! Автор: Romkin, romkin@pochtamt.ru, Москва Copyright: Модернизированная функция из SysUtils Дата: 18 июля 2002 г. ***************************************************** } function TailPos(const S, SubStr: AnsiString; fromPos: integer): integer; asm PUSH EDI PUSH ESI PUSH EBX PUSH EAX OR EAX,EAX JE @@2 OR EDX,EDX JE @@2 DEC ECX JS @@2 MOV EBX,[EAX-4] SUB EBX,ECX JLE @@2 SUB EBX,[EDX-4] JL @@2 INC EBX ADD EAX,ECX MOV ECX,EBX MOV EBX,[EDX-4] DEC EBX MOV EDI,EAX @@1: MOV ESI,EDX LODSB REPNE SCASB JNE @@2 MOV EAX,ECX PUSH EDI MOV ECX,EBX REPE CMPSB POP EDI MOV ECX,EAX JNE @@1 LEA EAX,[EDI-1] POP EDX SUB EAX,EDX INC EAX JMP @@3 @@2: POP EAX XOR EAX,EAX @@3: POP EBX POP ESI POP EDI end; Перевод контента на русский язык: Дана функция
Функция возвращает целочисленное значение, представляющее собой позицию первого вхождения подстроки в исходную строку, или 0, если подстрока не найдена. Вот разбивка кода:
Пример использования:
В этом примере функция Обратите внимание, что предоставленный код - это реализация Delphi ассемблерного языка и может не быть совместимым с другими программными языками или средами. В статье описана функция TailPos, которая ищет подстроку в строке с заданной позиции на ассемблере. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |