Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.08;
Скачать: CL | DM;

Вниз

Русский текст в консольном приложении.   Найти похожие ветки 

 
Б   (2009-09-17 11:16) [0]

Как в консольном приложении (New -> Other -> Consolle Application)
Writeln"ом вывести русский текст?


 
Медвежонок Пятачок ©   (2009-09-17 11:23) [1]

для консоли русский это cp866


 
Б   (2009-09-17 11:29) [2]

Не понял.


 
jack128_   (2009-09-17 11:30) [3]

AnsiToOem + F1


 
Anatoly Podgoretsky ©   (2009-09-17 12:31) [4]

> Б  (17.09.2009 11:16:00)  [0]

CHCP


 
{RASkov} ©   (2009-09-17 13:28) [5]

program Project1;
{$APPTYPE CONSOLE}
uses Windows;

function StrToRus(const AStr: String): String;
begin
 Result:="";
 if Length(AStr)>0 then begin
  SetLength(Result, Length(AStr));
  CharToOem(PChar(AStr), PChar(Result));
 end;
end;

begin
 Writeln(StrToRus("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧЩШЫЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчщшъ ыьэюя"));
 Readln;
end.


 
Б   (2009-09-17 13:49) [6]

{RASkov}

Спасибо!


 
Б   (2009-09-17 13:59) [7]

Реши написать под неё обёртку, чтобы какждый раз не транслировать текст:


Procedure WritelnEx(const Str: string);
begin
 Writeln(StrToRus(Str));
End;

Procedure WritelnEx2(const Str: string, (* ??? *));    // ???
begin
 Writeln(StrToRus(Str), 3);
End;



А как же описать в обёртке параметры идущие за текстом, как в Write/Writeln?

procedure WriteLn([ var F: Text; ] P1 [, P2, ...,Pn ] ); - Как описать непонятно.


 
Игорь Шевченко ©   (2009-09-17 14:09) [8]


> А как же описать в обёртке параметры идущие за текстом,
> как в Write/Writeln?


а никак


 
Сергей М. ©   (2009-09-17 14:14) [9]


> Как описать непонятно


А никак.
Это compiler magic)

Но можно "в лоб", примерно так:

WritelnEx(Values: array of Const);
var
 i: Integer;
begin
 for i := 0 to Length(Values) - 1 do
   Write(Values[i]);
 WriteLn;
end;


 
Inovet ©   (2009-09-17 14:18) [10]

> [7] Б   (17.09.09 13:59)

Исходник отконвертируй 1251->866 или плагин какой, чтоб перед компиляцией конвертировал, или шрифт в редакторе смени.


 
Anatoly Podgoretsky ©   (2009-09-17 14:42) [11]

> Сергей М.  (17.09.2009 14:14:09)  [9]

Не надо в лоб, как ты будешь в лоб решать n:w:d и подобное.


 
Inovet ©   (2009-09-17 15:00) [12]

> [10] Inovet ©   (17.09.09 14:18)

Ещё строки с cp866 можно например в FAR редактировать не закрывая файл в IDE.


 
sniknik ©   (2009-09-17 16:01) [13]

> или шрифт в редакторе смени.
+1
для "доса" и писать нужно в "досе".


 
КИрей   (2009-09-17 16:10) [14]

cmd /a?


 
Б   (2009-09-17 16:16) [15]

Ладно. Вопрос закрыт.


 
Вячеслав.К   (2009-09-17 18:37) [16]


> Б   (17.09.09 11:16)  


{
Модуль “русификации“ консольных приложений
(c) Eugene Kasnerik, 1999
e-mail: eugene1975@mail.ru
}
unit RuConsole;

interface

implementation

uses
 Windows;
{
Описание структуры приведено здесь с единственной целью –
не подключать SysUtils и, соответственно, код инициализации
этого модуля. Консольные приложения обычно малы и 25К кода
обработки исключений – несколько высокая плата за описание
единственной структуры.
}
type
 TTextRec = record
   Handle: Integer;
   Mode: Integer;
   BufSize: Cardinal;
   BufPos: Cardinal;
   BufEnd: Cardinal;
   BufPtr: PChar;
   OpenFunc: Pointer;
   InOutFunc: Pointer;
   FlushFunc: Pointer;
   CloseFunc: Pointer;
   UserData: array[1..32] of Byte;
   name: array[0..259] of Char;
   Buffer: array[0..127] of Char;
 end;

function ConOutFunc(var Text: TTextRec): Integer;
var
 Dummy: Cardinal;
 SavePos: Integer;
begin
 SavePos := Text.BufPos;
 if SavePos > 0 then
 begin
   Text.BufPos := 0;
   CharToOemBuff(Text.BufPtr, Text.BufPtr, SavePos);
   if WriteFile(Text.Handle, Text.BufPtr^, SavePos, Dummy, nil) then
     Result := 0
   else
     Result := GetLastError;
 end
 else
   Result := 0;
end;

initialization
 Rewrite(Output); // Проводим инициализацию файла
 { И подменяем обработчики. Есть в этом что-то от
 хака, но цель оправдывает средства }
 TTextRec(Output).InOutFunc := @ConOutFunc;
 TTextRec(Output).FlushFunc := @ConOutFunc;
end.



Страницы: 1 вся ветка

Текущий архив: 2009.11.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
2-1253197239
d@vinchi
2009-09-17 18:20
2009.11.08
Обновление данных в DbGrid в реальном времени?


15-1252790422
Германн
2009-09-13 01:20
2009.11.08
А что такое Windows CE?


15-1252568155
tesseract
2009-09-10 11:35
2009.11.08
Репетиция дня пргораммиста


15-1252870210
Achpile
2009-09-13 23:30
2009.11.08
С++


15-1252517487
@!!ex
2009-09-09 21:31
2009.11.08
Мона Лиза за 2.5 часа в MS Paint