Открыть главное меню

Изменения

Cprintf

2921 байт добавлено, 13:06, 28 ноября 2009
Создал статью
== Объявление ==
'''<tt>void cprintf( const char * format, ... );</tt>

== Описание ==
Функция [[ElfPack2]], выводит на консоль форматированную строку.
При этом, если EnableConsole = 1, консоль появится на экране.

Является аналогом функции <tt>printf</tt> библиотеки С stdio.

== Параметры ==
Описание параметров форматирования см. здесь: [http://ru.wikipedia.org/wiki/Printf printf].

cprintf (также как и [[cprint]]) поддерживает стандартный набор символов ASCII из нижнего диапазона (цифры, знаки препинания, латинские буквы), кириллические буквы согласно кодировке cp1251, а также псевдографические символы cp866 (DOS) - но их коды смещены на -0x20 относительно стандартного расположения.

Поможет ориентироваться с cp866 программа charmap, входящая в комплект поставки Windows (Accesories/System Tools/Character Map).
Переключите её в "Advanced view" и выберите Character set: "DOS: United States". Символы в промежутке от 0xB0 до 0xDF в кодировке cprint(f) расположены в 0x90--0xBF.

Кроме этого, cprint(f) поддерживает цветовое выделение текста. Для этого используются 16 цветов [http://ru.wikipedia.org/wiki/CGA CGA палитры], закодированные в виде управляющих символов 0x80+номер_цвета.

Например, чтобы все символы после текущего окрашивались в тёмно-красный цвет (0x4), нужно написать символ "\x84"

Чтобы ввести специальный символ (псевдографика или цвет), нужно добавить в общей строке "\x<код_символа>" (см. пример), однако с вводом кодов часто возникают проблемы компиляции, поэтому рекомендуется изолировать спецсимволы от текста с помощью дополнительных кавычек:
*"\x8AComplete" - не скомпилируется (найдено число 0x8AC)
*"\x8A""Complete" - так правильно

== Пример ==
<pre>
INT32 value = 10;

// Напишем красным и со значком "█"
cprintf("\x84\xBB""value = %d\n", value);
</pre>

== См. также ==
[[cprint]]

[[ldrToggleConsole]]


[[Категория:Функции ElfPack2]]
161
правка