Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 23:03   #1
Vitalii
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 17
По умолчанию Assembler одиночный символ из буфера

Добрый вечер!
Ситуация такова: у меня имеется буфер "dBuffer". Там содержится какой-то набор символов. Мне нужно оттуда доставать по 1 символу (точнее, нужно указывать на них)

Последний раз редактировалось Vitalii; 23.11.2011 в 20:41.
Vitalii вне форума Ответить с цитированием
Старый 22.11.2011, 23:31   #2
Vitalii
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 17
По умолчанию ...

Я немножко разобрался. теперь мне нужно вывести всю строку, содержащуюся в буфере, в editbox3, методом посимвольного вывода (таково задание). Выходит такой код:

val1 dd ?
len dd ?
rez db 'вы ввели символы: '

Код:
invoke lstrcpy, ADDR Buffer, ADDR rez  ; копируем в Buffer (не в dBuffer) строку 'вы ввели символы: '
	    invoke lstrlen, ADDR dBuffer      ; узнаём длину введённой в editbox1 строки     
            mov len,eax      ; сохраняем её                       
            mov ecx,len      ; заносим длину в регистр ecx                       
            mov esi,offset dBuffer    ;загружаем в регистр esi адрес dBuffer'а (буффера, в котором введённая строка)     
    metka:  	                                    
            mov edx,[esi]     ;заносим в регистр edx первый символ, находящийся в esi (по идее первый символ, который был введён в editbox1)                      
            invoke lstrcat, ADDR Buffer, edx   ; прибавляем к строке, содержащейся в буффере, тот символ, который сейчас в edx.    
            inc esi         ; увеличиваем esi на 1 (по-идее переходим к следующему символу)                            
            loop metka   ;на метку, если ecx = 0                          
                                                    
            invoke GetDlgItem,hWin,ID_EDIT3   ; получаем дискриптор editbox3, в который нужно всё это записать
            invoke SetWindowText,eax,ADDR Buffer  ; Записываем в editbox3 всё, что "накопилось" в Buffer'е
Компилируется без проблем. Запускается тоже. При введении символов в editbox1 и нажатии на кнопку, которая провоцирует все действия, которые я описал выше, windows выдаёт ошибку "программа работала неправильно", и приходится её закрывать. В чём тут может быть проблема ? что я написал не так?

Последний раз редактировалось Vitalii; 23.11.2011 в 19:12.
Vitalii вне форума Ответить с цитированием
Старый 23.11.2011, 20:43   #3
Vitalii
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 17
По умолчанию

АП!!!!!!!!!!!!!!!!!
Vitalii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в строке один символ на другой (assembler) fuzo Помощь студентам 1 06.05.2013 12:11
одиночный и двойной щелчок на ячейку. Rin БД в Delphi 0 07.05.2011 01:27
одиночный клик в списке вместо двойного Glen Свободное общение 19 22.02.2011 10:21
из буфера в TMemoryStream designer999 Общие вопросы Delphi 3 10.01.2011 19:23
печать из буфера Марксист Общие вопросы Delphi 2 28.07.2008 14:00