zub писал(а):{$CODEPAGE CP866}
ты вкурсе что эта директива значит? или для острастки?
В курсе. Она помогает программам использующим эту кодировку работать как раньше, надо только заменить типы строк на rawbytestring везде где это возможно.
zub писал(а):тут всё лищнее, как и setconsolecp ниже
Этот набор "заклинаний" появился не просто так, а как ответ на глюки семёрки и десятки. Запускаешь программу в "русской" винде и получаешь звиздец, потому что в путях оказываются не английские символы, а винда команды их сождержащие перекодирует! С кракозябрами в консоли ещё можно смириться, а с полной неработоспособностью программы - уже нет. И вот этот код решает эти проблемы. Причём, если к программе пристёгнут блок кода закоденный в лазарусе, то
- Код: Выделить всё
RUNCOMMAND('cmd.exe /c chcp 866',ZZ5); //контрольный "выстрел, чтобы накормить маздайку кодировкой"
setconsolecp(866);
нужно перед вводом системных команд или открытием файлов делать каждый раз после перерыва, потому что неизвестно, поменяла другая часть кода системные настройки или нет.
zub писал(а):У ТС проблемы не с кодировкой, но твой ответ добавит еще и их))
Мой ответ помогает решать виндопроблемы в приложениях использующих консоль и написанных не в лазарусе. В чём там у ТС проблема, точно не выяснили, но очевидно, что винда при любой возможности будет пытаться перекодировать его текст и как воспримет '!' - вопрос конечно интересный и неоднозначный, возможно, как управляющий код, лотерея это. А в хорошо написанной программе такие лотереи нужно исключить.