Помощь - Поиск - Пользователи - Календарь
Полная версия: Fpc: как получить размеры консоли
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
trminator
Привет!
Как известно, размеры консоли под winnt и linux не ограничиваются стандартными 25х80/24х80/сколько-там-еще-бывает. Так вот, хочется получать размеры, чтобы консольное приложение симпатично выглядело.

Пока что обошелся указанием размера как констант:
const
maxx = 80;  // ! how to get them
 maxy = 25;  // ! runtime? real sizes?
В итоге при запуске, например, из FAR'а, развернутого на весь экран, остаются черные поля справа и снизу. Некрасиво. При запуске проекта, перекомпилированного под Linux, вообще черт знает что получается (по умолчанию там Konsole открывает окошко в 80х24 символа, и прога красиво глючит. И вообще этот размер там меняется мышкой до любого, как пользователю взбредет).

Так что хочется получать настоящие размеры, желательно, чтобы способ был универсальным (то есть компилировался Free Pascal'ем как под Win, так и под Linux, так что использование какого-нибудь там WinAPI и LinAPI +) не очень удобно...)
trminator
Все, всем спасибо, нашел полную версию FPC с подробнейшей документацией (у меня было по минимуму поставлено, а ФАКов что-то не нашел). Вот решение, если кому интересно:
uses video;
....
   initVideo;
   maxx := ScreenWidth - 1; maxy := ScreenHeight - 1;
...
Как утверждается, модуль реализован и для Win32, и для Linux, и для других ОСей. То есть по идее проблемы с кроссплатформенностью не должно быть (под lin еще не пробовал, впрочем. Может, еще пошлют какую-нибудь библиотеку искать...)

Не совсем корректно работает при запуске из cmd.exe - выдает размеры экрана 80х59 (ширина правильно. Высота - у меня столько влезает на экран если окошко растянуть, а хотелось бы иметь текущую высоту окна. ИМХО это проблемы cmd.exe). При запуске из FAR'а все нормально.
trminator
Кстати, все забываю написать: если при использовании модуля video под Linux компилятор ругается:
/usr/bin/ld: cannot find -lcurses 



это решается созданием ссылки на libncurses.a с именем libcurses (криво написал... короче, вот что надо сделать: )
cd /usr/lib 
ln -s libncurses.a libcurses.a

Возможно, это относится только к моему дистрибутиву (SuSE 9.0), но мало ли кому пригодится...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.