Screen (Консоль)
 
Возвращает ASCII код символа или атрибут цвета в данном месте

Синтаксис

Declare Function Screen ( ByVal row As Integer, ByVal column As Integer, ByVal colorflag As Integer = 0 ) As Integer

Использование

result = Screen( row, column [, colorflag ] )

Параметры

row
смещение строки на основе 1 от верхнего левого угла консоли.
column
смещение столбца на основе 1 от верхнего левого угла консоли.
colorflag
Если равен 0, то возвращается ASCII код символа, в противном случае возвращается атрибут цвета. Если этот параметр опущен, по умолчанию 0.

Возвращаемое значение

ASCII код символа или атрибут цвета.

Описание

Screen возвращает символ или атрибут цвета, найденный в заданной позиции вывода консоли. Это работает в консольном и в графическом режиме.

Формат атрибута цвета зависит от текущей глубины цвета:

Если тип цвета палитры до 4 бит на пиксель (например, консоль Win32), то атрибут цвет представляет собой 8-битное значение, где старшие четыре бита содержат цвет фона ячейки, а младшие четыре бита цвет переднего плана (символа).

Если тип цвета палитры 8 бит на пиксель, то атрибут цвета представляет собой 16-битное значение, где старший байт имеет цвет фона , а младший байт имеет цвет переднего плана.

Если тип цвета является полноцветным, то атрибут цвета представляет собой 32-разрядное значение типа integer, которое содержит значение одного цвета. Если colorflag равен 1, тогда возвращается цвет переднего плана; Если colorflag равен 2, тогда возвращается цвет фона.


Цветовые значения для стандартной 16 цветовой палитры:

значение цветзначениецвет
0черный8 серый
1синий9ярко-синий
2 зеленый10ярко-зеленый
3 голубой11ярко-голубой
4 красный12ярко-красный
5 пурпурный13розовый
6 коричневый14желтый
7белый15 ярко-белый


Пример

Dim character_ascii_value As Integer
Dim attribute As Integer
Dim background As Integer
Dim cell_color As Integer
Dim row As Integer, col As Integer

character_ascii_value = Screen( row, col )
attribute = Screen( row, col, 1 )
background = attribute Shr 4
cell_color = attribute And &hf


'' Открываем графический экран с 4-мя битами на пиксель
'' (альтернативно можно закомментировать эту строку, чтобы использовать консоль)
ScreenRes 320, 200, 4

'' печатаем символ
Color 7, 1
Print "A"

Dim As UInteger char, col, fg, bg

'' Получаем значение ASCII символа, который мы только что напечатали
char = Screen(1, 1, 0)

''получаем атрибуты цвета
col = Screen(1, 1, 1)
fg = col And &HF
bg = (col Shr 4) And &HF

Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: ##"; fg
Print Using "Background color: ##"; bg
Sleep


'' Открываем графический экран с 8-мью битами на пиксель
ScreenRes 320, 200, 8

'' печатаем символ
Color 30, 16
Print "Z"

Dim As UInteger char, col, fg, bg

'' Получаем значение ASCII символа, который мы только что напечатали
char = Screen(1, 1, 0)

''получаем атрибуты цвета
col = Screen(1, 1, 1)
fg = col And &HFF
bg = (col Shr 8) And &HFF

Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: ###"; fg
Print Using "Background color: ###"; bg
Sleep


'' открываем полноцветный графический экран
ScreenRes 320, 200, 32

'' печатаем символ
Color RGB(255, 255, 0), RGB(0, 0, 255) 'yellow on blue
Print "M"

Dim As Integer char, fg, bg

'' Получаем значение ASCII символа, который мы только что напечатали
char = Screen(1, 1, 0)

''получаем атрибуты цвета
fg = Screen(1, 1, 1)
bg = Screen(1, 1, 2)

Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: &"; Hex(fg, 8)
Print Using "Background color: &"; Hex(bg, 8)
Sleep

Различия платформ

  • На версии Linux, возвращенное значение может отличаться от символа, показанного на консоли. Например, непечатные управляющие коды - такие как LF символ (10) , которые косвенно находятся после конца Print(напечатанного) текста - могут быть взяты вместо нетронутого символа на своем месте.

Отличия от QB

  • В QB Screen создает ошибку, если координаты были вне экрана.

См. также