Форум: "Основная";
Текущий архив: 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.042 c