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

Вниз

Русские буквы в Console Application   Найти похожие ветки 

 
Андрей Л.   (2004-09-10 13:31) [0]

В  Delphi 7 пришу приложение Console Application, при выводе русских букв не та кодировка, как её изменить на DOS-овскую? Помню, что как-то делал, но как не помню
writeln("Привет");


 
DiamondShark ©   (2004-09-10 13:42) [1]

Набирать текст программы в досовском редакторе.


 
Андрей Л.   (2004-09-10 13:44) [2]

А функцию какую-нибудь?

СharToOem не работает.


 
Reindeer Moss Eater ©   (2004-09-10 13:45) [3]

У нее по пятницам выходной.


 
Андрей Л.   (2004-09-10 13:49) [4]

Блин, товарищи программисты, давайте не будем отвлекаться от темы.


 
Reindeer Moss Eater ©   (2004-09-10 13:52) [5]

CharToOem


 
Андрей Л.   (2004-09-10 13:55) [6]

Функция может и срабатывает но окно тут же закрывается. При
трассировке компилятор пропускает функцию writeln(s1) и readln.
Если убираем функцию, то всё работает нормально
Вот код


uses widows;
var s1,s2:string;
begin
 s1:="Привет";
 CharToOem(Pchar(s1),Pchar(s2));
 writeln(s2);
 readnl;
end.


 
Reindeer Moss Eater ©   (2004-09-10 13:57) [7]

Под результирующий буфер надо выделять память.


 
DiamondShark ©   (2004-09-10 14:00) [8]


> А функцию какую-нибудь?
>
> СharToOem не работает.

А код и описание симптомов где?

Есть ещё unicode-версии консольных функций:

program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, Windows;

var
 hStdOut: THandle;

procedure WriteW(str: PWideChar);
var
 Chars: DWORD;
begin
 WriteConsoleW(hStdOut, str, lstrlenW(str), Chars, nil);
end;

begin
 hStdout := GetStdHandle(STD_OUTPUT_HANDLE);
 WriteW("Привет");
 readln;
end.


 
SlyFox   (2004-09-10 14:01) [9]

Обычно пользую такую вот функцию:

function CnvAnsiToOem(const S : string) : string;   //Конвертим в DOS-кодировку
var
Source, Dest : array[0..255] of Char;
begin
SetLength(Result, Length(S));
if Length(Result) > 0 then
AnsiToOem(PChar(S), PChar(Result));
if Length(Result) > 0 then
begin
AnsiToOem(StrPCopy(Source, S), Dest);
Result := StrPas(Dest);
end;
end;


 
Рамиль ©   (2004-09-10 14:07) [10]

function StrToOem(const AnsiStr: string): string;
begin
 SetLength(Result, Length(AnsiStr));
 if Length(Result) > 0 then
   CharToOemBuff(PChar(AnsiStr), PChar(Result), Length(Result));
end;

function OemToAnsiStr(const OemStr: string): string;
begin
 SetLength(Result, Length(OemStr));
 if Length(Result) > 0 then
   OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result));
end;


 
Андрей Л.   (2004-09-10 14:35) [11]

А как насчёт решения в одну строчку, можно так?
Мне для молодых студентов нужно. Боюсь, что вышепривелённый код будет для них не очень понятен. Но всё равно спасибо всем, кто ответил.


 
Reindeer Moss Eater ©   (2004-09-10 14:40) [12]

А как насчёт решения в одну строчку, можно так?

Стереть CR_LF в конце строк исходника.


 
kukuikar ©   (2004-09-10 16:33) [13]

не парься и используй MyWriteLn вместо WriteLn!

procedure MyWriteln(const S: string);
var
 NewStr: string;
begin
 SetLengtn(NewStr, Length(S));
 CharToOem(PChar(S), PChar(NewStr));
 Writeln(NewStr);
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
4-1092824281
AlexV
2004-08-18 14:18
2004.09.26
Как вывести список ссылок Favorites (Избранное) в ListBox ?


9-1085863701
kas-t
2004-05-30 00:48
2004.09.26
DelphiX: Antialiasing (сглаживание)


1-1094717455
312kbps
2004-09-09 12:10
2004.09.26
Как называется событие ?


1-1094938233
Kolan
2004-09-12 01:30
2004.09.26
Area в Chart


14-1094739487
dol
2004-09-09 18:18
2004.09.26
подарите исходник на делфи проги