2 / 2 / 0
Регистрация: 02.09.2010
Сообщений: 6
1

Ввод русских букв

02.09.2010, 19:00. Показов 6313. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Я пишу программу, где нужно вводить Имена русскими буквами.
Но Когда я щелкаю в руской раскладке то меня на экране отображается некая "абракадабра".

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
- Что бы переключать потом язык в консоли - не катит. Это не есть верно...

Мне нужно что бы как в функции вывода было - без всяких смен языка в настройках консоли..
Как это можно реализовать?


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function StrAnsiToOem(aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    CharToOem(PChar(aStr), PChar(Result));
  end;
end;
 
//Функция берёт строку в OEM кодировке (DOS)
//и возвращает её перевод в ANSI кодировку (Windows) в виде отдельной строки.
function StrOemToAnsi(const aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    OemToChar(PChar(aStr), PChar(Result));
  end;
end;
Мне уже знакомый показывал как то давно , что у него русскими буквами вводилось всё без изменения настроек , но я не придавал этому значения.
А сейчас сам лично столкнулся с этим.

Вопрос - как ?

Добавлено через 25 минут
Уточню еще немного кто не понимает:


как можно реализовать такую штуку что бы русская раскладка при вводе с клавиатуры правильно отображалась (а не абракадабра) , только 1 условие- программным путём?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2010, 19:00
Ответы с готовыми решениями:

Ввод русских букв
Создал функцию для проверки ввода только русских и английских букв в которую отсылаю Key с метода...

Ввод и отображение русских букв
Попался вот такой экзаменационный билет: Напишите программу, которая допускает ввод и...

Не работает ввод русских букв в Edit
Всем доброго времени суток! При вводе в Edit мне нужно, чтобы работали только русские буквы....

Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте
Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте.

8
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.09.2010, 09:40 2
Так и нужно тогда применять эти самые функции преобразования кодировок:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
program Project3;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
//Функция берёт строку в ANSI кодировке (Windows)
//и возвращает её перевод в OEM кодировку (DOS) в виде отдельной строки.
function StrAnsiToOem(aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    CharToOem(PChar(aStr), PChar(Result));
  end;
end;
 
//Функция берёт строку в OEM кодировке (DOS)
//и возвращает её перевод в ANSI кодировку (Windows) в виде отдельной строки.
function StrOemToAnsi(const aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    OemToChar(PChar(aStr), PChar(Result));
  end;
end;
 
var
  S : String;
begin
  Writeln(StrAnsiToOem( 'Этот текст в консоли будет показан правильно.' ));
  Writeln(StrAnsiToOem( 'Напечатайте строку и нажмите Enter.' ));
  Readln(S);
  S := StrOemToAnsi(S);
  S := 'Напечатан текст: "' + S + '".';
  Writeln(StrAnsiToOem( S ));
  Readln;
end.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.09.2010, 13:51 3
Кстати если часто работать с русским текстом то можно написать модуль или dll и не переписывать эти функции.
0
2 / 2 / 0
Регистрация: 02.09.2010
Сообщений: 6
06.09.2010, 16:33  [ТС] 4
меня видимо не правильно поняли.

у меня абракадабра при вводе. без нажатия на ввод...
написал я допустим "привет", остановился передохнуть, что бы дописать слово "мир" и в этот момент

смотрю на экран а там абракадабра а не русскими пишу...

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

Вот и у меня такая ситуация, до отправки введенного текста абракадабра у меня выводится. ТОесть я еще не успел ввод (enter) нажать как у меня уже абракадабра отображается...
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.09.2010, 16:48 5
Jizer, А вы это проверяли? У меня все нормально работает. На 1 картинке после ввода, до Enter, на 2 после Enter.
Миниатюры
Ввод русских букв   Ввод русских букв  
0
2 / 2 / 0
Регистрация: 02.09.2010
Сообщений: 6
07.09.2010, 18:31  [ТС] 6
Конечно пробовал.

Смотрите результат :
Миниатюры
Ввод русских букв  
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.09.2010, 18:37 7
Вы в коде не пропустили строку
Delphi
1
S := StrOemToAnsi(S);
?
Если нет, то не знаю.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.09.2010, 18:53 8
Я много раз уже писал - создавайте юникодную прогу и тогде вообще не будет проблем с кириллицей в консоли - функции, типа StrOemToAnsi, CharToOem, OemToChar и др. подобные не понадобятся!
Миниатюры
Ввод русских букв  
Вложения
Тип файла: rar Console_Unicode.rar (1.8 Кб, 110 просмотров)
0
2 / 2 / 0
Регистрация: 02.09.2010
Сообщений: 6
10.09.2010, 21:16  [ТС] 9
А в дельфи что ли можно выбирать кодировку, которая влияет на всё приложение? О_о

я думал там только на открытие и на сохранения самого кода..
0
10.09.2010, 21:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2010, 21:16
Помогаю со студенческими работами здесь

Вместо русских букв кваказябра
В ответе сервера вместо русских букв вот такая хрень:=месяцев назад. Как превратить это...

Вопросы вместо русских букв
у меня windows XP, пишу программы на Delphi 7 lite full edition проблема в том, что в некоторых...

Вместо русских букв иероглифы
Сделал консольное приложение, а вместо русских букв - иероглифы, как это исправить?

ROT13 для русских букв
Помогите разобраться с русскими буквами при шифровании в ROT13! Английские нормально шифруются и...

Чтение ключа из русских букв в Delphi
Вообщем-то. Есть ини файл. Есть в нем следующее: Русский=тест русского English=test eglish...

Программа удаления русских букв из предложения
Вот собственно задача: Предложение содержит буквы латинского и русского алфавитов. Написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru