Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2010, 18:24   #1
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 44
По умолчанию проблема с кодировкой

Почему вместо русского шрифта в рабочей программе непонятные символы показываются ?


Код:
program Console;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function Power(X, Y: Double): Double;
begin
  Result := Exp(Y * Ln(X));
end;

begin
  Writeln('2 в степени 3 = ', Power(2, 3));
  Writeln('Press Enter to exit...');
  Readln;
end.

Последний раз редактировалось Stilet; 05.07.2010 в 08:28.
tred вне форума Ответить с цитированием
Старый 04.07.2010, 18:58   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

CharToOem и иже с ней
p51x вне форума Ответить с цитированием
Старый 04.07.2010, 19:04   #3
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 44
По умолчанию

Благодарю за помощь но можно эту функцию в код вставить. Я её не знаю.
tred вне форума Ответить с цитированием
Старый 04.07.2010, 20:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://programmersforum.ru/search.php
p51x вне форума Ответить с цитированием
Старый 04.07.2010, 21:57   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

tred,
в uses допишите модуль Windows
добавьте функцию StrAnsiToOem
и везде, где есть вывод русских букв используёте её:
Код:
...
uses
SysUtils, Windows;

function StrAnsiToOem(const S: AnsiString): AnsiString;
begin
  SetLength(Result, Length(S));
  AnsiToOemBuff(@S[1], @Result[1], Length(S));
end;

function Power(X, Y: Double): Double;
begin
Result := Exp(Y * Ln(X));
end;

begin
Writeln(StrAnsiToOem('2 в степени 3 = '), Power(2, 3));
...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2010, 22:26   #6
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
tred,
в uses допишите модуль Windows
добавьте функцию StrAnsiToOem
и везде, где есть вывод русских букв используёте её:
Код:
...
uses
SysUtils, Windows;

function StrAnsiToOem(const S: AnsiString): AnsiString;
begin
  SetLength(Result, Length(S));
  AnsiToOemBuff(@S[1], @Result[1], Length(S));
end;

function Power(X, Y: Double): Double;
begin
Result := Exp(Y * Ln(X));
end;

begin
Writeln(StrAnsiToOem('2 в степени 3 = '), Power(2, 3));
...
Cпасибо , это работает.
tred вне форума Ответить с цитированием
Старый 05.07.2010, 07:30   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот еще вариант функции перекодировки (проверено, работает)
Код:
function PR(Const a : string) : string;
begin
  SetLength(result, length(a));
  CharToOem(PChar(a), Pchar(result));
end;
пример вызова функции
Код:
writeln(PR('Введите координату (x,y) вершины '),i);
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 05.07.2010, 13:55   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Grag
Код:
function PR(Const a : string) : string;
begin
  SetLength(result, length(a));
  CharToOem(PChar(a), Pchar(result));
end;
Grag, этот вариант, кстати, даже предпочтительней.

Т.к. Функция AnsiToOemBuff устарела. (оставлена в WinApi для совместимости)

цитирую:
Цитата:
The AnsiToOemBuff function is obsolete.

For compatibility with 16-bit versions of Windows, this function is implemented as a macro that calls the CharToOemBuff function, which should be used for new Win32-based applications.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой nolz Microsoft Office Word 1 07.01.2012 22:20
проблема с кодировкой Demonmov C++ Builder 1 02.06.2010 01:15
Проблема с кодировкой motorway Microsoft Office Excel 3 03.07.2009 22:27
Проблема с кодировкой... SynonymMixer Общие вопросы Delphi 6 28.01.2009 15:40
Проблема с кодировкой feniks65 Паскаль, Turbo Pascal, PascalABC.NET 13 06.01.2009 11:00