Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];
ВнизРусский текст в консольном приложении. Найти похожие ветки
← →
Б (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c