Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2022, 14:26   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию Наличие строки в строке

Есть две строки. Нужно проверить большую на предмет содержания меньшей внутри себя
Есть ли стандартные методы для этого? Или надо конструировать свой?
Kronos913 вне форума Ответить с цитированием
Старый 20.06.2022, 14:38   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Функция Pos именно это и делает.
type_Oleg вне форума Ответить с цитированием
Старый 20.06.2022, 14:45   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Pos
AnsiContainsText
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.06.2022, 15:00   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию

Пытался сделать самостоятельный код - почему-то выдаёт ошибки, сам не пойму почему
Код:
Function StrInStr(const Str1, AllStr: string):boolean;
var
  b, d, s, bb: longWord;
begin
  b:=Length(Str1);  {esi}
  bb:= Length(AllStr); {edi}
  asm
    mov d, edi
    mov s, esi
    mov esi, b
    mov edi, bb
    mov b, ebx
    mov bb, ebp

    cmp esi, edi
      jg @ExitF

    mov eax, 0
    mov ebx, 0
    sub edi, esi

    mov ecx, Str1
    mov edx, AllStr

    add esi, ecx
    add edi, edx
    inc edi

    @Start:
    dec edi

    cmp edi, edx
      je @ExitF
    {Begin}
      mov ecx, Str1
      mov ebp, edi

      @Begin2:
        mov al, [ecx]
        mov bl, [ebp]
        cmp al, bl
          jne @Start
        inc ecx
        inc ebp

        cmp ecx, esi
          jl @Begin2
      {end}
    {End}

    {@ExitT:}
    mov result, 1
    jmp @Exit1

    @ExitF:
    mov result, 0

    @Exit1:

    mov edi, d
    mov esi, s
    mov ebp, bb

    mov ebx, b
  end;
end;
Kronos913 вне форума Ответить с цитированием
Старый 20.06.2022, 16:27   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Лучше плохонькое, но своё? Не ищем лёгких путей...
digitalis вне форума Ответить с цитированием
Старый 20.06.2022, 16:30   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Посмотрите в модуле System как там Pos реализована. Вроде тоже asm-вставка
type_Oleg вне форума Ответить с цитированием
Старый 20.06.2022, 16:56   #7
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Лучше плохонькое, но своё? Не ищем лёгких путей...
Я код кинул раньше чем прочитал ответы - интернет тупит
Kronos913 вне форума Ответить с цитированием
Старый 20.06.2022, 19:53   #8
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Строковые команды типа cmpsb и scasb для слабаков. Пускай их cpu и выполняет быстрее чем обычные циклы!
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[СИ] Определить наличие заданных символов в строке LWM Помощь студентам 4 30.11.2016 15:49
Как проверить на наличие символов между запятыми в строке? ULR Помощь студентам 2 09.02.2013 19:27
как проверить наличие определенного текста в строке jihot Общие вопросы Delphi 6 04.04.2010 18:40
Как проверить наличие частицы в каждой строке memo? zotox Помощь студентам 13 24.03.2009 12:56
Си - Написать функцию, проверяющую наличие в строке заданного слова Cvetok Помощь студентам 1 14.05.2008 05:44