Сравнение строк с помощью функции lstrcmpi

Тема в разделе "WASM.BEGINNERS", создана пользователем barakyda, 22 окт 2007.

  1. barakyda

    barakyda New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2007
    Сообщения:
    10
    Здраствуйте, не могли бы вы объяснить почему при использовании функции lstrcmpi не работает код, а при использовании cmp всё OK??
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    lstrcmpi принимает два указателя. И если у Вас первый аргумент - это указатель, то 'gpj.' <=> 67706A2Eh. Сомневаюсь, что по этому адресу лежит именно строка '.jpg'.
     
  3. barakyda

    barakyda New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2007
    Сообщения:
    10
    можите объяснить по подробнее, если можно то покажите как надо.
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    barakyda
    lstrcmp сравнивает строки, поэтому и аргументы должны быть соответствующие.
     
  5. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    barakyda Куда уж ещё подробнее?

    lstrcmpi принимает в качестве аргументов указатели на строки.

    Код (Text):
    1. .data
    2. StringOne   db "брошу пить, курить… и прочая :)",0
    3. StringTwo   db "буду спортом заниматься",0
    4.  
    5. .code
    6.     push    offset StringOne
    7.     push    offset StringTwo
    8.     call    lstrcmpi
    9.  
    10. ; или так:
    11. ;   invoke lstrcmpi,ADDR StringOne,ADDR StringTwo
    12.     or      eax,eax
    13.     jz      strings_are_equal_bwahaha
    14. ;....
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Очередной мой прогон. dword ptr [FindData.cFileName+eax-4] тоже не есть указатель.
     
  7. barakyda

    barakyda New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2007
    Сообщения:
    10
    Спасибо всем за объяснения,но всё равно сравнение в моём примере не подружилось с lstrcmpi, поэтому я сделал ёщё один вызов cmp для JPG и всё работает.