Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Русские буквы в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
14-1094756012
dimodim
2004-09-09 22:53
2004.09.26
Есть ли ХРвин 2 сп


1-1094814005
HeKTO
2004-09-10 15:00
2004.09.26
HotKey


14-1094464745
YurikGL
2004-09-06 13:59
2004.09.26
IBAdmin vs IBExpert


1-1095086370
Lord de Mon
2004-09-13 18:39
2004.09.26
ShellExecute


3-1093416778
Koala
2004-08-25 10:52
2004.09.26
Как отловить Exception





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский