удаление символов с конца строки

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 8 янв 2007.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Как удалить определенное количество символов с конца строки.
     
  2. cpp_and_wasm

    cpp_and_wasm Владимир

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    128
    FASM:
    Код (Text):
    1. mov esi,длина_строки
    2. sub esi,количество_удаляемых_с_конца
    3. add esi,строка
    4. mov byte [esi],0
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    nSymbolsCount = 3; // число удаляемых символов (строка должна быть длиннее)

    с-строки:
    szString[lstrlen(szString)-nSymbolsCount] = 0;

    pascal-строки:
    szString[0] -= nSymbolsCount; :)
     
  4. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    гы-гы

    Код (Text):
    1. mov esi,длина_строки
    2. cmp esi,количество_удаляемых_с_конца
    3. jb @@error
    4. sub esi,количество_удаляемых_с_конца
    5. add esi,строка
    6. mov byte [esi],0
    7. jmp @@continue
    8. @@error:
    9. обработка ошибок
    10. @@continue:
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а лучше так:
    Код (Text):
    1. mov esi,длина_строки
    2. sub esi,количество_удаляемых_с_конца
    3. jb @@error
    4. add esi,строка
    5. mov byte [esi],0
    6. jmp @@continue
    7. @@error:
    8. обработка ошибок
    9. @@continue:
     
  6. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а еще лучше:
    class StringShortener
    {
    public:
    StringShortener(LPSTR lpString)
    void CutString(int nLength);
    private:
    LPSTR lpString;
    };

    StringShortener::StringShortener(LPSTR lpInitString)
    {
    this->lpString= lpString;
    }

    void StringShortener::CutString(int nLength)
    {
    int length= strlen(lpString);
    if(length<nLength)
    throw _com_error(код ошибки, NULL, FALSE);

    lpString[length-nLength]= 0;
    }


    ...

    try
    {
    StringShortener str(szString);
    str.CutString(число_символов);
    }
    catch(_com_error err)
    {
    обработка ошибок
    }
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    invoke strlen, offset string
    sub eax, число символов
    invoke strncpy, offset string, offset string, eax
     
  8. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    последний пример не сработает, наверное...
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    strrev(lpString);
    strcpy(lpString, lString+число_символов);
    strrev(lpString);
     
  10. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    FASM:
    Код (Text):
    1. num = 5; Number of symbols for deleting
    2. string db 'stringasdf',0
    3. xor ecx,ecx
    4. dec ecx
    5. mov edi,string
    6. xor al,al
    7. repne scasb
    8. sub edi,num
    9. mov byte ptr edi,al
     
  11. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    cpp_and_wasm
    Код (Text):
    1. mov esi,длина_строки
    2. sub esi,количество_удаляемых_с_конца
    3. add esi,строка
    4. mov byte [esi],0
    может так лучше? :
    Код (Text):
    1. lea esi,[длина_строки-количество_удаляемых_с_конца+строка]
    2. mov byte [esi],0
     
  12. cpp_and_wasm

    cpp_and_wasm Владимир

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    128
    Dostoevsky
    Незнаю, не пробовал.
    Nouzui только не надо классы... 8(
     
  13. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    тогда инкапсулируем их в com-объекты с двийственным интерфейсом и передадим запрос через rpc
     
  14. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    Nouzui
    можно это через асимптотики решить трижды интегрируя по натуральному логарифму в квадрате, а потом находим корни в комплексной плоскости с помощью метода рунге-кутта, даллее рисуем пыль пуассона в гильбертовом пространстве через функции dx10 - только в windows vista, моделируя при этом дуссельдорфовый пролив маера-котеса, чтобы получить окончательное решение надо написать эмулятор двухпроцессорныой машины, потому что просто так не потянет тачка и впихнуть это на конвеер через таблицу виртуальных функций ватком компилера. потом брутфорсим порт 31337 до получения заветной цифры и подключаем нейронку через эллиптическое гамирование по коду 681111h. стало быть метаморфмим это потом мисфалем с самыми сильными настройками и даем на скормление avp. он и выведем нам нужную строку в своем сообщении об обнаружении вируса.
     
  15. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а так все невинно начиналось..
     
  16. koderr

    koderr New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    205
    Dostoevsky
    Долго смеялся.
     
  17. Cyber_Mozg

    Cyber_Mozg Andrey

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    214
    Адрес:
    Russia
    Dostoevsky+1
     
  18. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Как пользоватся в masm strncpy и strcpy.
     
  19. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    includelib kernel32.lib

    ....

    invoke lstrlen,....
    ....
    invoke lstrcmp....

    короче, см. MSDN
     
  20. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    CT
    Гм. А что будем сравнивать?