Строки

Тема в разделе "WASM.BEGINNERS", создана пользователем mAgoja, 1 ноя 2005.

  1. mAgoja

    mAgoja New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    114
    Адрес:
    Ukraine
    Драсте, подскажите пожайлуста:

    Есть ли у API функции для перевода c INTEGER в STRING(для отображения)?

    Есть ли у API функции проверка строки на вложения другой строки?

    Str db "YOU/",0

    Str1 db "/",0

    invoke Функция, addr str, addr str1

    Если в строке Str есть срока Str1, то функция возврашает результат вложения.(В этом результате возвратит что строка вложенная)?



    Зарание СПАСИБО!!!1
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Посмотри в masmlib, там есть dwtoa, InString

    Если нужно именно winapi, то wsprintf

    И вообще, воспользуйся поиском, такие вопросы постоянно задают
     
  3. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69


    wsprintf - самый лучший вариант для этих целей, бесспорно



    Нету. Я как-то для этого использовал следующую фукцию:
    Код (Text):
    1.  
    2. FindSubString proc
    3.  push ebp
    4.  mov  ebp, esp
    5.  mov  esi, dword ptr [ebp+8]   ;основная строка
    6.  mov  edi, dword ptr [ebp+0Ch] ;искомая подстрока
    7.  xor  eax, eax
    8.  xor  ebx, ebx
    9.  xor  ecx, ecx
    10.  xor  edx, edx
    11. L0:
    12.  cmp  byte ptr [edi+ebx], 0    ;конец искомой подстроки, значит нашли
    13.  jz   L3
    14.  cmp  byte ptr [esi+eax], 0    ;конец основной строки, значит ничего не нашли
    15.  jz   L2
    16.  mov  dl, byte ptr [edi+ebx]
    17.  cmp  dl, byte ptr [esi+eax]
    18.  jnz  L1                       ;символы не совпадают
    19.  mov  ecx, eax                 ;сохраняем номер совпавшего символа
    20.  inc  eax
    21.  inc  ebx
    22.  jmp  L0
    23. L1:
    24.  inc  ecx                      ;восстанавливаем номер последнего
    25.  mov  eax, ecx                 ;совпавшего символа
    26.  xor  ebx, ebx
    27.  jmp  L0
    28. L2:
    29.  xor  eax, eax                 ;если не нашли, возвращаем 0
    30.  jmp  L4
    31. L3:
    32.  mov  eax, 1                   ;если нашли, возвращаем 1
    33. L4:
    34.  pop  ebp
    35.  retn 8
    36. FindSubString endp
    37.  


    Но, что-то мне кажется что она "дырявая", и может не всегда выдавать правильный результат (хотя пока этого не происходило). Код, думаю, тоже можно несколько уменьшить, но на это у меня ума не хватает =)
     
  4. mAgoja

    mAgoja New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    114
    Адрес:
    Ukraine
    СПАСИБО всем, а особенно Sl4v4.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Sl4v4



    Я бы сказал, самый простой. Ибо по скорости он далеко не лучший.





    InString пошустрее будет.
     
  6. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    IceStudent



    Я это и имел ввиду



    Не спорю. К тому же, как я уже говорил, эта функция не всегда возвращает правильный результат. Начинал я со старенького ТАСМ'а где небыло таких надстроек, вот и появилась привычка делать (точнее пытаться делать) всё

    самому. В общем, просто привёл её как пример. А то многие уже забыли что можно писать что-то самому, а не только пользоваться готовыми библиотеками.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Sl4v4

    Нет, не забыли :)

    Каждый время от времени пишет свой велосипед.