Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1252419013
Rule
2009-09-08 18:10
2009.11.08
Как поменять комбинацию клавиш в делфи ИДЕ 7


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


15-1251837650
Кто б сомневался
2009-09-02 00:40
2009.11.08
Запрет на изготовление ламп накаливания на 100 ватт в Европе


4-1221114459
МистерТ
2008-09-11 10:27
2009.11.08
Отображение HBITMAP на диалоге ?


2-1253263783
Прима
2009-09-18 12:49
2009.11.08
array [0..0] of ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский