Выполняется следующий код: Код (Text): mov ebx,2 .REPEAT mov al,byte ptr [StrRecv+ebx] invoke wsprintf,addr buf,addr format,al invoke lstrcat,addr textbuf1,addr buf inc ebx invoke MessageBox,0,addr buf,0,0 mov al,byte ptr [StrRecv+ebx] .UNTIL al == 124 MessageBox написал для проверки, посмотреть, что ж в буфере после выполнения. Заметил, что если длинна текста, который берется из hwndedit2 нечетная, то MessageBox как-то подозрительно выглядит, а если кол-во символов четное, то все ок. Даже не представляю в чем может быть проблема. Что я не так делаю? P.S. буффер объявлен как "buf db 256 dup(0)"
В каком смысле? Пытается удрать за пределы экрана? Неплохо бы знать, что в format'е находится. И вот так наверное лучше: Код (Text): [b]movzx eax[/b],byte ptr [StrRecv+ebx] invoke wsprintf,addr buf,addr format,[b]eax[/b]
ActioN Это баг макроса invoke, который пытается преобразовать 8-битный операнд (al) в 32-битное значение, но делает это некорректно. Лечится так, как объяснил cresta. Имейте в виду, что размер любых значений в стеке должен быть кратен 4-м байтам! Иначе API-функции будут "странно" себя вести.
Странный MessageBox был без заголовка. В format'e находится "%d". cresta, Quantum, ура все отлично работает!!! Спасибо вам Большое и спасибо что существует такой прекрасный форум.