Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Русификация [D7, WinXP]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо