Русский текст в консоли

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Mortem

Сообщение Mortem »

Есть FPC 2.0.2...
Есть простенькая программка...

Код: Выделить всё

program summer;

{$APPTYPE CONSOLE}

uses
  Windows;

  function rus(aStr : String) : String;
  begin
    SetLength(Result, Length(aStr));
    CharToOem(PChar(aStr), PChar(Result));
  end;

begin
  WriteLn(rus('В поисках лета!'));
  ReadLn;
end.


В итоге в консоле не выводятся некоторые буквы. При попытке набрать в консоле текст по русски так же не выводятся некоторые буквы. При компиляции исходника в Delphi всё замечательно работает.

Что я не так делаю???
Janus
постоялец
Сообщения: 134
Зарегистрирован: 07.11.2005 16:06:49

Сообщение Janus »

У меня все буквы выводит, все прекрасно работает. Все ты так делаешь.
Guest

Сообщение Guest »

Забавно, но вылечилось вот такой строчкой...

Код: Выделить всё

{$LONGSTRINGS ON}


Janus
Видимо по дефолту у тебя оно включено было. Каким IDE пользуешься?
Guest

Сообщение Guest »

Janus
Можно ещё

Код: Выделить всё

  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);


Но шрифт при этом Lucida Console придётся поставить...
Janus
постоялец
Сообщения: 134
Зарегистрирован: 07.11.2005 16:06:49

Сообщение Janus »

Без этой директивы программа вообще не компилируется, т.к. shortstring нельзя привести к PChar. По крайней мере в режиме Objfpc. А IDE я не пользуюсь, компилирую из командной строки.

Зарегистрировался бы хоть?
Mortem
незнакомец
Сообщения: 3
Зарегистрирован: 25.03.2006 19:59:22
Откуда: Воронеж, Москва, Зеленоград

Сообщение Mortem »

Зарегался и выяснил следующее...

Код: Выделить всё

{$LONGSTRINGS ON}

Не при чём. Проблема появляется при подключении модуля Crt.

Но вот

Код: Выделить всё

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

проблему вроде сняло без всякой замены шрифтов.

Спасибо всем, вроде помогло... (:
Ответить