Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2008, 11:45   #1
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию Проблема с кодировками, шрифтами..

Всем привет. Уменя такая проблема одна вышла :
Значит имеется форма, на ней memo1, memo2, button1, мне необходимо, чтобы после прогона мы вводили в memo1 текст на юникоде (Азерб-ий расклад клавы) затем при нажатии на button1 чтоб в memo2 этот же текст отобразился на том же юникоде, но с буквами Английскими или Русскими (то есть типа под другой расклад клавы).
Например вводим в мемо1 слово "ümüd" а при нажатии кнопки в мемо2 будет слово (рус расклад)"цмцв" ну или (англ расклад) "wmwd".

Я в проге через сопоставление сделать хотел, через case ,но проблема в том что наши азербайджанские буквы то в самой программном коде никак не записать же, а в мемо я использую tnt-компоненты, там поддержка в юникоде азерб-их букв идёт.
Какие есть варианты на решение этой задачи?
Заранее всем благодарен.
Gauss вне форума Ответить с цитированием
Старый 13.02.2008, 12:01   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вообще не понял, в чем тут вопрос...
Установите в Memo1 свойства Font.Charset и Font.Name для азербайджанского, а в Memo2 - нужные вам (вторым баттоном будете выбирать) для русской или английской раскладки...
mihali4 вне форума Ответить с цитированием
Старый 13.02.2008, 12:07   #3
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Я записываю в мемо1 на азерб-ом текст, нажимаю на кнопку и мне нужно чтобы в мемо2 этот текст по-буквенно ототбразился (допустим русскими буквами), ведь не получается же просто через фонт это сделать.

дело в том что там некоторые буквы в виде вопросиков выйдут ,а мне нужно чтобы для каждой буквы было соответствие русскими буквами.

Незнаю насколько я смог объяснить, попытаюсь заново :

Я записываю текст на азербайджанском в мемо1, вот например

"qьertyuiopцğasdfghjklıəzxcvbnm зş." и мне нужно чтобы после нажатия на буттон в Мемо2 появился вот такой текст -
"йцукенгшщзхъфывапролджэячсмить бю." Это мне надо программно реализовать, чтобы соответсвие между буквами было. Вот так.

Последний раз редактировалось Gauss; 13.02.2008 в 13:51.
Gauss вне форума Ответить с цитированием
Старый 13.02.2008, 13:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тебе нужна процедура транслитерации.
ТОлько зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.02.2008, 13:16   #5
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

То что я хочу сделать - это называется процедурой транслитерации?

Да я просто SAPI переделываю под наши звуки, вот и в программе наткнулся на такую проблемку.
Gauss вне форума Ответить с цитированием
Старый 13.02.2008, 15:11   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
Memo2.Font.Charset := DEFAULT_CHARSET (= 1)
Memo2.Font.Charset := RUSSIAN_CHARSET (= 204)
Если этого окажится не достаточно делаем так. Создаем константу:
Код:
const
  _Russen: array [128..255] of Char = (#145,#154...#143,#184,#148);
Где в скобках непечислены номера русских символов, соответствующих азербайжанским. Далее по кнопке делаем следующее:
Код:
var
  s: String;
  i, j: Integer;
begin
  s := Memo1.Text;
  for i := 1 to Length (s) do begin
    if ord (s[i]) > 127 then
      s[i] := _Russen [ord (s[i])];
  end;
  Memo2.Text := s;
end;
Sibedir вне форума Ответить с цитированием
Старый 13.02.2008, 15:11   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, тогда и нанесение русских букв на клавиши клавиатуры можно назвать транслитерацией...
Давайте так - вы вводите не конкретные буквы, не важно, на каком языке - вы вводите коды символов, и коды эти в зависимости от выбранного чарсета будут отображаться как китайские, японские, грузинские, русские, немецкие и т.д. символы.
Т.е. какое соответствие у вас на клавиатуре нарисовано, так и будет.
Вы хотите в своей программе изменить раскладку клавиш?
Ну тогда напишите таблицу таблицу соответствия, которая вам нужна...
И по ней переводите символы...
mihali4 вне форума Ответить с цитированием
Старый 13.02.2008, 15:42   #8
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вы хотите в своей программе изменить раскладку клавиш?
Ну тогда напишите таблицу таблицу соответствия, которая вам нужна...
И по ней переводите символы...
Я, если чесно, до этого нигде не сталкивался с задачей транслитерации и незнал такого слова. Я не хочу изменять раскладку клавиатуры, просто в моем проекте выпала необходимость для такого кода.
Очень благодарен всем вам за помошь!

Sibedir спасибо за код, я скоро попробую это реализовать, и напишу тут как все получилось.
Gauss вне форума Ответить с цитированием
Старый 14.02.2008, 15:35   #9
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Извините Sibedir, у меня один вопрос, а вот константы эти
const
_Russen: array [128..255] of Char = (#145,#154...#143,#184,#148);

это всмысле буду ASCII-коды тех русских букв, которых я сопоставляю для азерб-их да ???
Gauss вне форума Ответить с цитированием
Старый 15.02.2008, 10:55   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Да, это так.
Я конечно с таким не сталкивался, но мне кажется, что эту проблему нужно решать как-то иначе. Хотя ели поможет, то и это сгодится. Как говорится: лишь бы работало.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с dll( DM_bite Помощь студентам 10 31.07.2008 16:05
Проблемы с кодировками Анси и Юникод HunterMan Win Api 4 31.05.2008 00:41
Проблема с UDP Kirill666 Работа с сетью в Delphi 3 22.03.2007 21:55
проблема со шрифтами Gambler Microsoft Office Word 0 29.10.2006 21:35