- Код: Выделить всё
- uses crt;
 var a:string;
 c:char;
 begin
 a:='Проверка';
 c:='ш';
 writeln(a);
 writeln(c);
 end.
И получаем иероглифы.
Убираем модуль crt - всё отображается нормально.
Такая конструкция:
- Код: Выделить всё
- {$codepage CP866}
 uses crt,windows;
 type
 CPString = type AnsiString(866);
 var a:CPString;
 b:String
Отображает правильно переменную a, но не b или константы. При этом от значение AnsiString (хоть 866, хоть 1251) ничего не зависит. Использование SetConsoleOutputCP(866); (в модуле Windows) тоже ничего не даёт. Как и использование DefaultSystemCodePage.
Вообще проблема кроется в том, что консоль (и, соотвественно, редактор и кодировка констант в нём) использует кодировку 866, но при выводе идёт конвертирование в кодировку 1251. Причём это поведение изменяется при подключении модуля crt. Без него всё отображается "как есть". Есть способы обойти такую конвертацию?




 (CodeTyphon 5.60)
 (CodeTyphon 5.60)