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

Вниз

русский шрифт в консоли - как ?   Найти похожие ветки 

 
Фёдор Мегатронов   (2004-12-17 00:25) [0]

Вот использую функцию FormatMessage чтобы узнать описание ошибки, и вывожу обычным WriteLnом ... он конечноже пишет белеберду .. потому что описания ошибок (у меня) есть только на русском языке .

Что сделать чтобы у всех там был именно PYCCKUE 6YKBbI ?


 
Anatoly Podgoretsky ©   (2004-12-17 00:27) [1]

CharToOem


 
Piter ©   (2004-12-17 01:18) [2]

Вопрос: как перекодировать строку из кодировки OEM (DOS) в кодировку ANSI (Windows) и обратно?

Ответ: воспользоваться функциями CharToOem и OemToChar. Пример:

function Win2Dos(const aStr: String): String;
begin
 Result := aStr;
 if Result <> "" then
   CharToOem(PChar(Result),PChar(Result));
end;

function Dos2Win(const aStr: String): String;
begin
 Result := aStr;
 if Result <> "" then
   OemToChar(PChar(Result),PChar(Result));
end;

Отвечал: Panov


 
Amoeba ©   (2004-12-17 13:10) [3]

На эту тему есть статья:
http://www.delphiplus.org/articles/rus_console.html


 
DiamondShark ©   (2004-12-17 13:16) [4]

unit conio;

interface

implementation

uses
 Windows;

const
 fmClosed = $D7B0;
 fmInput  = $D7B1;
 fmOutput = $D7B2;
 fmInOut  = $D7B3;

type
 PTextBuf = ^TTextBuf;
 TTextBuf = array[0..127] of Char;
 TTextRec = packed record
   Handle: Integer;
   Mode: Integer;
   BufSize: Cardinal;
   BufPos: Cardinal;
   BufEnd: Cardinal;
   BufPtr: PChar;
   OpenFunc: Pointer;
   InOutFunc: Pointer;
   FlushFunc: Pointer;
   CloseFunc: Pointer;
   case integer of
     0: (OldOpenFunc, OldInOutFunc, OldFlushFunc, OldCloseFunc: Pointer);
     1: (
       UserData: array[1..32] of Byte;
       Name: array[0..259] of Char;
       Buffer: TTextBuf);
 end;

 TTextFunc = function(var F: TTextRec): Integer;

function InOutFunc(var F: TTextRec): Integer;
begin
 case F.Mode of
   fmOutput: begin
     AnsiToOemBuff(F.BufPtr, F.BufPtr, F.BufPos);
     Result := TTextFunc(F.OldInOutFunc)(F);
   end;
   fmInput: begin
     Result := TTextFunc(F.OldInOutFunc)(F);
     if F.BufEnd > 0 then
       OemToAnsiBuff(F.BufPtr, F.BufPtr, F.BufEnd);
   end;
 else
   Result := TTextFunc(F.OldFlushFunc)(F);
 end;
end;

function FlushFunc(var F: TTextRec): Integer;
begin
 case F.Mode of
   fmOutput: begin
     AnsiToOemBuff(F.BufPtr, F.BufPtr, F.BufPos);
     Result := TTextFunc(F.OldFlushFunc)(F);
   end;
 else
   Result := TTextFunc(F.OldFlushFunc)(F);
 end;
end;

function OpenFunc(var F: TTextRec): Integer;
begin
 Result := TTextFunc(F.OldOpenFunc)(F);
 with F do
   begin
     OldInOutFunc := InOutFunc;
     OldFlushFunc := FlushFunc;
     OldCloseFunc := CloseFunc;
     InOutFunc := @conio.InOutFunc;
     FlushFunc := @conio.FlushFunc;
   end;
end;

procedure InitConsoleIO;
begin
 with TTextRec(Output) do
   begin
     OldOpenFunc := OpenFunc;
     OpenFunc := @conio.OpenFunc;
   end;
 with TTextRec(Input) do
   begin
     OldOpenFunc := OpenFunc;
     OpenFunc := @conio.OpenFunc;
   end;
end;

initialization
 InitConsoleIO;

end.

Подключить к проекту и наслаждаться.



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

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

Наверх




Память: 0.48 MB
Время: 0.05 c
3-1102142124
lexales
2004-12-04 09:35
2005.01.02
Проблемы с базой данных


1-1103311479
Julia
2004-12-17 22:24
2005.01.02
Qreport


4-1100622542
Viner
2004-11-16 19:29
2005.01.02
Информация об оборудовании


8-1096632820
zero-g
2004-10-01 16:13
2005.01.02
Вставка субтитров в видео


10-1071784665
Temik
2003-12-19 00:57
2005.01.02
DCOM: как запустить в сети?