![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Русификация [D7, WinXP]
Nickolay © (2010-07-01 12:06:00)Сразу извиняюсь за свой "стон", но все-таки "консоль не поет по-русски": консольное приложение не выдает "Привет!" в Delphi 7 с помощью инструкции WriteLn('Привет!').
Пытался сделать по статье Евгения Каснерика с вашего сайта,
но процедур CharToOem, CharToOemBuff почему-то нет в библиотеке.
Как быть?
AnsiToOem (2010-07-01 14:58:00) [21]Почему не рабочая, если не затруднит, поясни, пожалуйста.
Довольно длительное время использую - на AV не нарывался.
Anatoly Podgoretsky (2010-07-01 14:54:00) [22]Да еще и когда название не соответствует действию. Это не ANSItoOEM, а CharToOem
AnsiToOem (01.07.10 14:45) [11]
А у тебя функция не рабочая, рано или поздно получишь AV
Anatoly Podgoretsky (2010-07-01 14:48:00) [23]
> Deltas © (01.07.10 14:30) [8]
Я уже увидел, невнимательным был и это подтверждение тезиза, что не надо использовать имена стандартных функций, если это не обосновано.
AnsiToOem (2010-07-01 14:45:00) [24]В частности у меня эта функция называется:
function ConsToRussian(S: string): string;
begin
System.SetLength(Result, Length(S));
CharToOem(PChar(S), PChar(Result));
end;
никаких переопределений
:)
Deltas (2010-07-01 14:39:00) [25]
> а зачем ?
Случайно
Игорь Шевченко (2010-07-01 14:37:00) [26]
> Я переопределил идентификатор AnsiToOem, здесь вызывается
> функция описанная чуть выше, в [3], а не та, которая импортирована
> из библиотеки и описана в модуле Windows.
а зачем ?
Deltas (2010-07-01 14:30:00) [27]
> Anatoly Podgoretsky © (01.07.10 13:47) [5]
> > Writeln(AnsiToOem('Привет!'));
> > For compatibility with 16-bit versions of Windows, ...
>
Я переопределил идентификатор AnsiToOem, здесь вызывается функция описанная чуть выше, в [3], а не та, которая импортирована из библиотеки и описана в модуле Windows.
И. Павел (2010-07-01 14:10:00) [28]> и мне не понятен смысл
string не рекомендуется передавать по значению, если его не предполагается изменять - много времени занимает.
AnsiToOem (2010-07-01 14:02:00) [29]
function AnsiToOem(S: string): string;
begin
System.SetLength(Result, Length(S));
CharToOem(PChar(S), PChar(Result));
end;
Так чуть короче, без
var Length: Integer;
и мне не понятен смысл: ( constS: string)
Anatoly Podgoretsky (2010-07-01 13:47:00) [30]
> Writeln(AnsiToOem('Привет!'));
> For compatibility with 16-bit versions of Windows, ...
Deltas (2010-07-01 13:11:00) [31]Writeln(AnsiToOem('Привет!'));
Deltas (2010-07-01 13:11:00) [32]uses
Windows;
function AnsiToOem(const S: string): string;
var
Length: Integer;
begin
Length := System.Length(S);
SetLength(Result, Length);
CharToOemBuff(PChar(S), PChar(Result), Length);
end;
RWolf (2010-07-01 13:08:00) [33]Если запускать программу из-под FAR, то достаточно ввести предварительно команду chcp 1251. Весь консольный вывод будет перекодироваться в ANSI.
Anatoly Podgoretsky (2010-07-01 12:20:00) [34]> Nickolay (01.07.2010 12:06:00) [0]
Кто украл, а что ты делал? Может ты не указал нужные модули в USES