Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Экранные Средства    >>    crt_bad
   
 
 Почему вредно использовать модуль CRT   Виктор Вагнер 03.03.1994

Чем плох модуль CRT, и как с этим бороться



1k 
 

From: Vitus B. Wagner <vitus@agropc.msk.su> Organization: Agroecological problems Center Известно, что модуль CRT вреден. Он громоздок, т.к. всегда линкуется к программе целиком, не делясь на отдельные процедуры, как модуль DOS, например. Он лишает вас возможности переназначить ввод-вывод средствами DOS. Он создает проблемы с графикой, т. к. неопытные любители писать графические программы не знают, что для работы с процедурами Readln и Writeln в графическом режиме надо сделать DirectVideo:=False. Можно, конечно сделать ASSIGN(Output,'');Rewrite(Output), а модулем CRT пользоваться только для управления курсором. Но зачем в таком случае цеплять к программе весь модуль CRT? Ведь большую его часть занимает как раз драйвер текстового файла с прямым доступом к экранной памяти. Конечно, есть в нем и полезные процедуры ReadKey,ClrScr,Sound например. Но лучше бы было не цеплять вместе с ними 6 К паразитного кода. Предлагаемый модуль MiscTool как раз и позволяет сделать это. Он содержит аналоги тех процедур модуля CRT, которые чаще всего используются теми, кто работает в графике, или ограничивается выводом на стандарнтный вывод DOS.Большая часть этих процедур реализована вообще как Inline, ибо их размер сопоставим с кодом команды CALL, а остальные написаны на Pascal, и, следовательно, предоставляют Smart Linker'у полный простор для деятельности. Кроме того, позволю себе предложить вам ряд советов по созданию красивого вывода на STDOUT. Шире используйте управляющие коды, поддерживаемые DOS. Это #10 - перевод строки с оставлением курсора в текущей позиции #13 - возврат на ночало текущей строки строки ( стандартный Writeln записывает в конец строки последовательность #13#10) #9 - табуляция (увы, стандартным CRT не поддерживается, правда, поддерживается моим VCRT, который всячески рекомендую тем, кто не может отказаться от CRT, но не хочет переходить на Turbo или Object Professional или работает в графике) #8 - BackSpace - возврат на предыдущую позицию в строке. Например, такая последовательность: Write('Recieving...'); ..... Write('Recieved '#8#8#8#8); сделает вам весьма симпатичную картинку - сначала появляется сообщение Recieving..., которое по окончании операции заменяется на Recieved, приче