Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ консоль и текст

Автор: Client 22.03.2010 20:53

Написать программу (консольное приложение), которая запрашивает у пользователя вес в фунтах, пересчитывает его в килограммы и выводит результат на экран. Для вывода сообщений использовать функцию RUS, которая преобразует строку символов в кодировке ANSI в строку в кодировке ASCII. (функцию создать самостоятельно).
Интересует вторая часть условия. Используется консоль в дельфи или паскаль.
Как задать строку на русском языке, чтоб при выводе она отобразилась корректно?


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 22.03.2010 23:03

Дельфи 2007 и выше:

  function WinToDos(const S: string): AnsiString;
begin
setLength(result, length(S));
if not CharToOem(pWideChar(S), pAnsiChar(result)) then
setLength(result, 0)
end;

Дельфи 2006 и ниже:
  function WinToDos(const S: string): string;
begin
setLength(result, length(S));
if not CharToOem(pChar(S), pChar(result)) then
setLength(result, 0)
end;

Попробуй запустить вот такое простейшее консольное приложение:
var s: string;
begin
s := 'Привет, мир!';
writeln(WinToDos(s));
readln;
end.

Автор: Client 23.03.2010 2:42

Спасибо, 1 вариант у меня отработал (D2009). А для паскаля такое возможно?

Автор: volvo 23.03.2010 2:54

Для какого Паскаля? Разве ты при работе в Паскале не используешь одну и ту же кодировку и в самой IDE, и в консоли при выводе? Вот в Дельфи кодировки действительно разные - в IDE виндовая, а в консоли OEM. Отсюда и необходимость переконвертации.

Автор: Client 23.03.2010 3:00

Понятно, хотя странно зачем разные кодировки...
А про паскаль - это уже на тему "Паскаль и русские слова" smile.gif