Fasm - Поиск текста.

Тема в разделе "WASM.BEGINNERS", создана пользователем Everhest, 13 июн 2008.

  1. Everhest

    Everhest New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2007
    Сообщения:
    105
    Привет всем, помогите пожалуйста... Обьясните принцип поиска текста и установки позиции в EDIT'e + выделение найденого слова. Если вдруг у кого завалялись то дайте примерчик пажалуйста. Заранее благодарю.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    считать текст в буфер, пропарсить на предмет поиска нужного текста, если найден то
    будем иметь количество байт от начала буфера до начала текста, установить выделение
    тривиально - EM_SETSEL
     
  3. Everhest

    Everhest New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2007
    Сообщения:
    105
    Ну считать текст в буфер это понятно, выделить примерно тоже, но пропарсить эт как?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    один из вариантов, в данном случае позиции нулевых байтов пропускаются, т.к. писалось
    не для поиска текста

    только это masm, переделать под fasm тривиально
    Код (Text):
    1. ParseBuffer proc uses ebx edi esi lpString:DWORD, StringLength:DWORD, lpBuffer:DWORD, BufferLength:DWORD
    2.          mov edi, lpString
    3.          mov esi, lpBuffer
    4.          mov ecx, StringLength
    5.          mov ebx, ecx
    6.          mov edx, esi
    7.          add edx, BufferLength
    8.          sub edx, StringLength
    9.          inc edx
    10. @loop:
    11.          cmp esi, edx
    12.          je @not_found
    13.          test ecx, ecx
    14.          jz @found
    15.          mov al, BYTE PTR [edi]
    16.          test al, al
    17.          jz @00h_found
    18.          cmp BYTE PTR [esi], al
    19.          je @parse
    20.          sub edi, ebx
    21.          add edi, ecx
    22.          sub esi, ebx
    23.          add esi, ecx
    24.          inc esi
    25.          mov ecx, ebx
    26.          jmp @loop
    27. @parse:
    28.          inc edi
    29.          inc esi
    30.          dec ecx
    31.          jmp @loop
    32. @00h_found:
    33.          inc edi
    34.          inc esi
    35.          dec ecx
    36.          jmp @loop
    37. @not_found:
    38.          xor eax, eax
    39.          jmp @F
    40. @found:
    41.          mov eax, esi
    42.          sub eax, ebx
    43.          sub eax, lpBuffer
    44. @@:
    45.          ret
    46. ParseBuffer endp
     
  6. Everhest

    Everhest New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2007
    Сообщения:
    105
    Спасибо, буду изучать.