Как при указании строки вставить в нее произвольные символы, например, указав их код? Причем это нужно сделать так, чтобы все было в одних кавычках. Конкретно, нужно написать строку, оканчивающуюся нулем (на самом деле это не столь важно), не используя запятую и ноль в конце. Т.е. аналог db 'Тест',0, только последний ноль запихнуть внутрь кавычек. Компилятор - FASM.
Нет, это нужно для инициализации структуры. Вот конкретная строка кода: Код (Text): pNiData NOTIFYICONDATA sizeof.NOTIFYICONDATA,?,IDI_TRAY1,NIF_ICON + NIF_MESSAGE + NIF_TIP,WM_TRAYNOTIFY,?,'подсказка' Проблема в том, что я не могу добавить после текста завершающий ноль (а также символы перевода строки и др. управляющие символы). Если после кавычек приписать запятую и ноль, то фасм начинает ругаться на неправильное кол-во аргументов при определении структуры. Может есть какой-то способ писать все в кавычках (типа как /n в Си)? Вообще это не критично, но все же интересно узнать...
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
Mikola Делай вручную, это же не Си. Либо создай отдельную форматированную строку, либо форматируй после, как показано в #4.
Вообще скорее всего это на совести компилятора, т.к. вопрос - это не значит ноль. А так нормально работает и без конечного нуля. Но насчет добавления в середину текста перевода строки (или, например, той же кавычки) придется заморачиваться. А в MASMе вообще возможно в текст в кавычках вставлять произвольные символы? Может, в FASMе будет так же? Меня интересует общий вопрос, без конкретной связи с определением структур.
А как можно создать форматированную строку? И еще: может можно как-то макросом забить нужные символы? Например, сначала вместо них поставить пробелы, а потом их заменить на то, что нужно.
Код (Text): pNiData NOTIFYICONDATA sizeof.NOTIFYICONDATA,?,IDI_TRAY1,NIF_ICON + NIF_MESSAGE + NIF_TIP,WM_TRAYNOTIFY,?,<'подсказка',0,0x0D,0x0A>
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