Как добавить в строку произвольные символы?

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

  1. Mikola

    Mikola New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2007
    Сообщения:
    9
    Как при указании строки вставить в нее произвольные символы, например, указав их код? Причем это нужно сделать так, чтобы все было в одних кавычках. Конкретно, нужно написать строку, оканчивающуюся нулем (на самом деле это не столь важно), не используя запятую и ноль в конце. Т.е. аналог db 'Тест',0, только последний ноль запихнуть внутрь кавычек. Компилятор - FASM.
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Mikola
    Если я правильно понял - тебе необходима скрытая строка
    тогда посмотри пример в аттаче
     
  3. Mikola

    Mikola New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2007
    Сообщения:
    9
    Нет, это нужно для инициализации структуры. Вот конкретная строка кода:
    Код (Text):
    1. pNiData NOTIFYICONDATA sizeof.NOTIFYICONDATA,?,IDI_TRAY1,NIF_ICON + NIF_MESSAGE + NIF_TIP,WM_TRAYNOTIFY,?,'подсказка'
    Проблема в том, что я не могу добавить после текста завершающий ноль (а также символы перевода строки и др. управляющие символы). Если после кавычек приписать запятую и ноль, то фасм начинает ругаться на неправильное кол-во аргументов при определении структуры. Может есть какой-то способ писать все в кавычках (типа как /n в Си)? Вообще это не критично, но все же интересно узнать...
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Mikola
    NOTIFYICONDATAA STRUCT
    cbSize DWORD ?
    hwnd DWORD ?
    uID DWORD ?
    uFlags DWORD ?
    uCallbackMessage DWORD ?
    hIcon DWORD ?
    szTip BYTE 64 dup (?)
    NOTIFYICONDATAA ENDS
    т.е szTip строка в 64 байта проинициализированная нулями
    если необходимо поставить ноль в пятом символе строки, то по-моему это делают так:
    mov [pNiData].szTip+4,0
    PS извините, если что не так, я пишу на MASM32, а не на FASM'e
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Mikola
    Делай вручную, это же не Си. Либо создай отдельную форматированную строку, либо форматируй после, как показано в #4.
     
  6. Mikola

    Mikola New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2007
    Сообщения:
    9
    Вообще скорее всего это на совести компилятора, т.к. вопрос - это не значит ноль. А так нормально работает и без конечного нуля.:) Но насчет добавления в середину текста перевода строки (или, например, той же кавычки) придется заморачиваться. А в MASMе вообще возможно в текст в кавычках вставлять произвольные символы? Может, в FASMе будет так же? Меня интересует общий вопрос, без конкретной связи с определением структур.
     
  7. Mikola

    Mikola New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2007
    Сообщения:
    9
    А как можно создать форматированную строку? И еще: может можно как-то макросом забить нужные символы? Например, сначала вместо них поставить пробелы, а потом их заменить на то, что нужно.
     
  8. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    Код (Text):
    1. pNiData NOTIFYICONDATA sizeof.NOTIFYICONDATA,?,IDI_TRAY1,NIF_ICON + NIF_MESSAGE + NIF_TIP,WM_TRAYNOTIFY,?,<'подсказка',0,0x0D,0x0A>
     
  9. Mikola

    Mikola New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2007
    Сообщения:
    9
    KiNDeR
    Все заработало, это как раз то, что было нужно. Огромное спасибо!
     
  10. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Mikola
    для гарантированного обнуления пишут так
    pNiData NOTIFYICONDATA <0>
    а в MASM'e абсолютно эквивалентно:
    db 'Mikola',0
    db 'Miko',6Ch,'a',0
    db 'Miko'
    db 'la',0
    db 'M','i','k','o','l','a',0
    db "Mikola",0
    dq 616C6F6B694Dh
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    pNiData NOTIFYICONDATA ...,?,<'подсказка',13,10,'ещё одна строка',0>