Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Внизрусский шрифт в консоли - как ? Найти похожие ветки
← →
Фёдор Мегатронов (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c