Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.11.2022
Сообщений: 35

Создание окна в который вводится буква

14.05.2024, 09:45. Показов 887. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
4. Разработать программу, которая предлагает оператору угадать букву, позволяет ему много
раз повторить попытку, и в конце говорит, с какого раза он угадал.
Нужно закрыть этот предмет
Мне помогли сделать код, но буква просто записана как переменная, нужно чтобы было окно в которой вводится буква и затем пользователь пытается угадать

Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
format PE GUI 4.0
entry start
include 'win32a.inc'
 
section '.data' data readable writeable
    Letter db 'k',0      ; Буква, с которой будем сравнивать введенный текст
    Message1 db 'Вы угадали',0
    Message2 db 'Вы не угадали',0
    Caption1 db 'Ура!',0
    Caption2 db 'Попробуйте еще раз',0
    z dd ?               ; Резервное значение
 
section '.code' code readable executable
start:
    ; Получаем дескриптор текущего модуля
    invoke GetModuleHandle, 0
    ; Открываем диалоговое окно с ID 1 и обрабатываем результат в процедуре DialogProc
    invoke DialogBoxParam, eax, 1, HWND_DESKTOP, DialogProc, 0     ;дескриптор рабочего стола
    ; Завершаем процесс
    invoke ExitProcess, 0
 
proc DialogProc hwnddlg, msg, wparam, lparam       ;переменную, содержащую дескриптор диалогового окна, Параметры сообщения; позволяют программе обращаться к элементу управления, управлять им
    xor eax, eax        ; Обнуляем регистр eax
 
    ; Проверяем, была ли нажата кнопка закрытия окна
    cmp [msg], WM_CLOSE 
    je FreeDialog        ; Если да, переходим к завершению диалога
 
    ; Проверяем, была ли отправлена команда
    cmp [msg], WM_COMMAND
    jne ExitProc         ; Если нет, переходим к завершению процедуры
 
    ; Проверяем, была ли нажата кнопка с ID 3 (Continue)
    mov eax, BN_CLICKED   ;флаг, указывающий, что кнопка была нажата.
    shl eax, 10h ;сдвиг на 16 влево, чтобы установить биты, представляющие сообщение от кнопки
    add eax, 3
    cmp [wparam], eax
    jne ExitProc         ; Если нет, переходим к завершению процедуры
 
    ; Считываем текст, введенный пользователем, из элемента управления с ID 2
    invoke GetDlgItemText, [hwnddlg], 2, text, 20h  ;дескриптор диалогового окна, идентификатор элемента управления, из которого нужно извлечь текст,буфер, куда помещен текст
    ; Сравниваем введенный текст с буквой 's'
    mov edi, text
    mov esi, Letter
    cmpsb
    je message          ; Если совпадают, переходим к метке message
 
    ; Если не совпадают, выводим MessageBox
    invoke MessageBox, 0, Message2, Caption2, MB_OK
    ret
 
FreeDialog:
    ; Завершаем диалоговое окно с кодом 0
    invoke EndDialog, [hwnddlg], 0 
    ExitProc: ret
 
message:
    ; Если совпадают, выводим MessageBox
    invoke MessageBox, 0, Message1, Caption1, MB_OK
    endp
 
section '.bss' readable writeable 
    text rb 20h          ; Резервируем место для хранения введенного текста
 
section '.idata' import data readable writeable 
    library kernel, 'KERNEL32.DLL',\
    user, 'USER32.DLL'
    
    import kernel,\
    GetModuleHandle, 'GetModuleHandleA',\
    ExitProcess, 'ExitProcess'
    
    import user,\
    DialogBoxParam, 'DialogBoxParamA',\
    EndDialog, 'EndDialog',\
    MessageBox, 'MessageBoxA',\
    GetDlgItemText, 'GetDlgItemTextA'
 
section '.rsrc' resource data readable 
    directory RT_DIALOG, dialogs 
    resource dialogs,\
    1, LANG_NEUTRAL, WorkWithEdit
    
dialog WorkWithEdit,'Ugadai bykvy', 0, 0, 150, 50,WS_CAPTION+WS_SYSMENU+DS_CENTER
    ; Элемент управления: поле ввода
    dialogitem 'Edit', '', 2, 10, 10, 130, 12, WS_VISIBLE+WS_BORDER
    ; Элемент управления: кнопка
    dialogitem 'Button', 'Continue', 3, 45, 25, 50, 15, WS_VISIBLE
enddialog
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2024, 09:45
Ответы с готовыми решениями:

Создать файл, в который будет вводится текст который введен с Edit
помогите пожалуйста с делфи. нужно создать файл в который будет вводится текст который введен с эдита. пишу программу, выдает без ошибок,...

Определить, что вводится - буква или цифра
которая при нажатии любых клавиш выводит на экран только буквы и цифры, при этом указывая, что выводится: буква или цифра.

Как узнать, что вводится в программу: число или буква?
Доброй ночи. Изучил все топики с подобным вопросом, но к однозначному и понятному решению не пришел. Имеется код: #include...

1
 Аватар для sporta1982
54 / 51 / 7
Регистрация: 05.10.2023
Сообщений: 409
22.05.2024, 16:53
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
;format PE GUI 4.0
;entry start
 
.386
.model flat, stdcall
option casemap :none   ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
;include \masm32\include\gdi32.inc
      
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
;includelib \masm32\lib\gdi32.lib
 
DialogProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
       
 
.data
    Letter dd 'k',0      ; Буква, с которой будем сравнивать введенный текст
    Message1 db 'Вы угадали',0
    Message2 db 'Вы не угадали',0
    Caption1 db 'Ура!',0
    Caption2 db 'Попробуйте еще раз',0
    text dd ?               ; Резервное значение
    dlgname       db "TESTWIN",0
    count dd 0
    string dd 0,0,0,0,0,0,0,0,0,0
    format db 'попытка номер %d'
 
.code
start:
    ; Получаем дескриптор текущего модуля
    invoke GetModuleHandle, 0
    ; Открываем диалоговое окно с ID 1 и обрабатываем результат в процедуре DialogProc
    invoke DialogBoxParam, eax, ADDR dlgname, HWND_DESKTOP, ADDR DialogProc, 0     ;дескриптор рабочего стола
    ; Завершаем процесс
    invoke ExitProcess, 0
 
DialogProc proc hwnddlg, msg, wparam, lparam       ;переменную, содержащую дескриптор диалогового окна, Параметры сообщения; позволяют программе обращаться к элементу управления, управлять им
    xor eax, eax        ; Обнуляем регистр eax
 
    ; Проверяем, была ли нажата кнопка закрытия окна
    cmp [msg], WM_CLOSE 
    je FreeDialog        ; Если да, переходим к завершению диалога
 
    ; Проверяем, была ли отправлена команда
    cmp [msg], WM_COMMAND
    jne ExitProc         ; Если нет, переходим к завершению процедуры
 
    ; Проверяем, была ли нажата кнопка с ID 3 (Continue)
    mov eax, BN_CLICKED   ;флаг, указывающий, что кнопка была нажата.
    shl eax, 10h ;сдвиг на 16 влево, чтобы установить биты, представляющие сообщение от кнопки
    add eax, 1
    cmp [wparam], eax
    jne ExitProc         ; Если нет, переходим к завершению процедуры
 
    ; Считываем текст, введенный пользователем, из элемента управления с ID 2
    invoke GetDlgItemText, hwnddlg,101, ADDR Letter, 4  ;дескриптор диалогового окна, идентификатор элемента управления, из которого нужно извлечь текст,буфер, куда помещен текст
    invoke GetDlgItemText, hwnddlg,100, ADDR text, 4  ;дескриптор диалогового окна, идентификатор элемента управления, из которого нужно извлечь текст,буфер, куда помещен текст
    ; Сравниваем введенный текст с буквой 's'
    mov edi, text
    mov esi, Letter
    cmp edi,esi
    je message          ; Если совпадают, переходим к метке message
 
    ; Если не совпадают, выводим MessageBox
    inc count
    invoke wsprintfA, ADDR string,ADDR format,count 
    invoke MessageBox, 0, ADDR Message2, ADDR string, MB_OK
    ret
 
FreeDialog:
    ; Завершаем диалоговое окно с кодом 0
    invoke EndDialog, [hwnddlg], 0 
    ExitProc: ret
 
message:
    inc count
    invoke wsprintfA, ADDR string,ADDR format,count 
    ; Если совпадают, выводим MessageBox
    invoke MessageBox, 0, ADDR Message1, ADDR string, MB_OK
    mov count,0
    ret
DialogProc    endp
 
;section '.bss' readable writeable 
;    text rb 20h          ; Резервируем место для хранения введенного текста
 
;section '.idata' import data readable writeable 
;    library kernel, 'KERNEL32.DLL',\
;    user, 'USER32.DLL'
    
 ;   import kernel,\
 ;   GetModuleHandle, 'GetModuleHandleA',\
 ;   ExitProcess, 'ExitProcess'
    
 ;   import user,\
;    DialogBoxParam, 'DialogBoxParamA',\
 ;   EndDialog, 'EndDialog',\
 ;   MessageBox, 'MessageBoxA',\
 ;  GetDlgItemText, 'GetDlgItemTextA'
 
;section '.rsrc' resource data readable 
;    directory RT_DIALOG, dialogs 
;    resource dialogs,\
;    1, LANG_NEUTRAL, WorkWithEdit
    
;dialog WorkWithEdit,'Ugadai bykvy', 0, 0, 150, 50,WS_CAPTION+WS_SYSMENU+DS_CENTER
    ; Элемент управления: поле ввода
  ;  dialogitem 'Edit', '', 2, 10, 10, 130, 12, WS_VISIBLE+WS_BORDER
    ; Элемент управления: кнопка
 ;   dialogitem 'Button', 'Continue', 3, 45, 25, 50, 15, WS_VISIBLE
;enddialog
end start
Я это скомпилировал на masm32, в qeditore.


Ниже файл ресурсов

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "\masm32\include\resource.h"
 
 
TESTWIN DIALOGEX MOVEABLE IMPURE LOADONCALL DISCARDABLE 10, 10, 205, 122, 0
STYLE DS_MODALFRAME | 0x0004 | DS_CENTER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_POPUP
CAPTION "Dialog"
FONT 8, "MS Sans Serif", 700, 0 /*FALSE*/
BEGIN
    EDITTEXT        100,    67,8,71,14, ES_AUTOHSCROLL | ES_LEFT, , 0
    EDITTEXT        101,    67,28,71,12, ES_AUTOHSCROLL | ES_LEFT, , 0
    PUSHBUTTON      "Calculate", 1,     66,98,35,16, 0, , 0
    PUSHBUTTON      "Clear", 2,     105,98,35,16, 0, , 0
    CTEXT           "Input 1", 20,  11,10,43,10, SS_LEFT, , 0
    CTEXT           "Input 2", 30,  11,29,43,10, SS_LEFT, , 0    
END
Добавлено через 55 секунд
вместо рожицы нужно двоеточие....

Добавлено через 5 минут
Там будет 2 окошка, в одно вводите символ и во второе, ну и сам у себя угадываете,
счетчик попыток там есть, если вам нужно что бы это выглядело поприличнее уберите строки ,
начинающиеся с ;

Добавлено через 48 минут
p.s. каждый раз нужно нажимать кнопочку "Calculate"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2024, 16:53
Помогаю со студенческими работами здесь

Определить количество слов в строке, содержащих две буквы С. Буква С вводится пользователем
(Максимальная длина строк не менее 50 символов. При реализации программы использование функций для работы со строками из библиотек stdlib.h...

С клавиатуры вводится последовательность символов. Если символ – строчная буква алфавита, то вывести на
Привет форум, обращаюсь к вам за помощью в написании программы: "С клавиатуры вводится последовательность символов. Если символ – строчная...

Вводится буква с клавиатуры - выводится к какому алфавиту она принадлежит и ее номер в алфавите
Объявить два диапазонных типа: один буквы русского алфавита, второй буквы английского алфавита. Вводится буква с клавиатуры - выводится к...

Вводится буква с клавиатуры - выводится к какому алфавиту она принадлежит и ее номер в алфавите
16 вариант 1. Объявить два диапазонных типа: один буквы русского алфавита, второй буквы английского алфавита. Вводится буква с клавиатуры...

Вводится одномерный массив строк. Составить строку из уникальных букв. Буква считается уникальной, если
Вводится одномерный массив строк. Составить строку из уникальных букв. Буква считается уникальной, если содержится только в одной строке из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy: Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile. Через crontab -e добавить задачу: 0 3. . .
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
Dapper - лучший среди микроORM под C#
UnmanagedCoder 09.06.2025
Знаете, в мире ORM-инструментов для . NET существует негласная иерархия. На вершине массивных фреймворков возвышается Entity Framework - неповоротливый, но всемогущий. А в категории легковесных. . .
Сравнение GCC 14 и Clang 18 компиляторов C для HPC
bytestream 08.06.2025
В высокопроизводительных вычислениях (HPC) выбор компилятора - это ход, способный радикально изменить производительность всей системы. Работая последние 15 лет с критическими HPC-системами, я видел. . .
Всё о конфигурации ASP.NET Core
stackOverflow 08.06.2025
Старый добрый web. config, похоже, отправился на пенсию вместе с классическим ASP. NET. За годы работы с различными проектами я убедился, что хорошо организованная конфигурация – это половина успеха. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »