Документация по Clarion

STATUS (состояние принтера/файла/диска/клавиатуры)


STATUS(| принтер |)
| диск |
| файл |
|клавиатура|

принтер Строковая константа или переменная, содержащая допостимое в ДОС название принтерного порта: LPT1, LPT2 или LPT3.
диск Строковая константа или переменная, содержащая допустимое в ДОС имя диска: A:, B:, C:, . . ., Z:.
файл Метка оператора FILE.
клавиатура Строковая константа или переменная, содержащая имя устройства: CON.

Функция STATUS возвращает текущее состояние принтера, диска, файла или клавиатуры.

STATUS(принтер) Возвращает 0, если принтер не готов и 1, если с принтером все в порядке.


STATUS(диск) Возвращает 0, если диск не готов или свободное место на диске в байтах, если диск в порядке.
STATUS(файл) Возвращает 0, если файл не открыт и режим доступа к файлу, если он открыт. Если текущий режим доступа - 0 (только для чтения, любой доступ), то возвращается код 40h (Read Only Deny None) (см. ).
STATUS(клавиатура) Возвращает флаг состояния клавиатуры. Этот флаг рассматривается в виде совокупности битов в длинном целом. Значения битов приведены ниже (** означает, что бит установлен только пока клавиша нажата):
x....... ........ Ins **
.x...... ........ Caps Lock **
..x..... ........ Num Lock **
...x.... ........ Scroll Lock **
....x... ........ Режим паузы (Ctrl-Num Lock или Pause) **
.....x.. ........ Sys Req **
......x. ........ Left Alt **
.......x ........ Left Ctrl **
........ x....... Режим вставки
........ .x...... Caps Lock
........ ..x..... Num Lock
........ ...x.... Scroll Lock
........ ....x... Alt **
........ .....x.. Ctrl **
........ ......x. Left Shift **
........ .......x Right Shift **

Возвращаемый тип данных: LONG
Пример:
IF STATUS(DataFile) % 16 = 0 !Файл открыт только для чтения?
RETURN ! ну тогда отваливаем
ELSE !В противном случае
EXECUTE DiskAction ! пишем запись на диск
ADD(DataFile)
PUT(DataFile)
DELETE(DataFile)
. .
LOOP
IF STATUS('A:') = 0 !Проверяем состояние диска А:
SHOW(1,1,'Вставьте, пожалуйста, диск в дисковод A:')
BEEP
ASK
ELSE
BREAK
. .
LOOP
IF STATUS('LPT1') = 0 !Проверка состояния принтера
SHOW(1,1,'Проверьте, пожалуйста, принтер.')
BEEP
ASK
ELSE
BREAK
. .
LOOP
IF BAND(STATUS('CON'),00100000b) !Проверяем Num Lock
SHOW(1,1,'Выключите, пожалуйста, Num Lock')
BEEP
ASK
ELSE
BREAK
. .
См. также:





Содержание раздела