Часто задаваемые вопросы по RinTime библиотеке FB
 


FreeBASIC Runtime библиотека , вопросы:




FreeBASIC Runtime библиотека, вопросы


Как проиграть звук?
Из звуковых ключевых слов QB, только BEEP реализован в FB.
Если требуется звук из динамика ПК, то это реализуется кодом с помощью IN и OUT. См. пример в данной справке по ключевому слову OUT.
Существует библиотека под названием QBSound. Она позволяет эмулировать способность QB играть в фоновом режиме мелодии, закодированные в строках. Там используется синтезатор звуковой карты.
Если требуется проигрывать WAV или Mp3-файлы через звуковую карту, можно использовать внешние библиотеки FMOD или BASS. Они могут использоваться для  Linux и Windows. Для DOS см. DOS FAQ раздел.

Вернуться к началу

Как получить доступ к последовательным портам?

DOS
Смотрите DOS FAQ раздел.

Windows and Linux
Смотрите Open Com.

Вернуться к началу

Как работать с печатью?
Начиная с версии 0.15 FB есть поддержка вывода символов на принтер.
Чтобы напечатать графику, возможны два подхода:
  • Предварительно обработайте графику, откройте порт принтера , перенастройте принтер программно из текстового режима в пиксельный с помощью специфических функций принтера и с помощью #Print пошлите туда пиксельный массив данных. Это OS-портативно, но зависит от модели принтера. Только для DOS, см. DOS FAQ раздел.
  • В Windows и Linux есть специальные API вызовы. Это не OS-портабельно, но OS драйвер принтера делает это принтер-независимым

Вернуться к началу

Как получить доступ к аппаратным портам?

Реализовано так же, как в версии V0.15 QB с помощью INP, OUT и WAIT.
GfxLib перехватывает вызовы некоторых портов VGA, чтобы эмулировать palete манипуляцию и vsync методы, используемые в QB. Так к портам &H3DA, &H3C7, &H3C8 и &H3C9 нельзя получить доступ, потому что они используются в GfxLib. Все другие порты доступны.
Ничего лишнего не требуется при использовании INP и OUT в Linux или DOS. Для версии Windows требуется драйвер устройства, который устанавливается каждый первый раз при запуске программы в Windows сессии; Для установки этого драйвера всего лишь нужно при первом запуске выполнять программу с правами администратора или программа закончится с ошибкой.

Вернуться к началу

Как ведут себя строки , переданные по byval?

Этот пункт написан по состоянию на 01.30.2007.

FreeBASIC String по сути является встроенным пользовательским типом, который помимо всего прочего, содержит указатель на строку данных и длину строки.. Внутренне для этого типа определяется дескриптор, и именно этот дескриптор передается в процедуру, когда параметры передаются по ссылке.
При передаче по значению, передаются фактические данные строки, а не дескриптор. Внутренне строковые данные будут завершены нулевым символом (chr(0)). При создании временной String для процедуры, FreeBASIC копирует строку данных, переданную процедуре, до первого нулевого символа. Если передаваемый аргумент String содержит символы NULL в строке, то остальная часть строки данных после первого значения NULL не копируется, и строка усекается. Вы также рискуете сделать запись вне границ выделенной памяти.
Поведение будет следующее: временный дескриптор будет создан для процедуры, и 'полная копия' ее областей будет сделана (особенно все данные последовательности символов будут скопированы в новую память, и новый дескриптор укажет на эту память).
Для безопасности, часто передают Strings по ссылке. Если вам нужно имитировать правильное поведение передачи String по значению, то 1) создайте временную String, инициализируйте ее значением из оригинальной String , и передайте ее по ссылке, или 2) передайте String по ссылке, но создайте в процедуре временную String , которую проинициализируйте значением из оригинальной String. И уже с этой временной строкой и работайте.

Вернуться к началу

См. также