RUS <-> ENG

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3334
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

RUS <-> ENG

Сообщение Игорь Столяров » 28 Июнь 2018, 8:13

Привет всем !

Не хочу изобретать велосипед. :)
Подскажите пожалуйста, существует где-нибудь готовый метод для конвертации строк,
набранных в неправильной раскладке. Причём можно даже без детектирования.

То есть юзер хотел набрать "мышь белая", но из-за неправильной раскладке ввёл "vsim ,tkfz".
и что бы можно было быстро это конвертнуть в русскую раскладку ввода (и наоборот).

Заранее спасибо ! :)
Вам помочь или не мешать ?

Аватара пользователя
Admin
Администратор
Сообщения: 3304
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

RUS <-> ENG

Сообщение Admin » 28 Июнь 2018, 9:27

Вот на коленке сделал:

Код: Выделить всё

                PROGRAM
                MAP
                  convert2(string str, byte direction),string
                END

  CODE
  message(convert2('Ghbvth yf heccrjv zpsrt фтв щт Утпдшыр!', 3))

convert2    procedure(string str, byte direction)!,string
str1        string('йцукенгшщзхъфывапролджэячсмитьбюё')
str2        string('qwertyuiop[]asdfghjkl;''zxcvbnm,.`')
c           long
l           long
p           long
  code
  l = len(clip(str))
  loop c = 1 to l
    case direction
    ! russian to english = 1
    of 1
      p = instring(lower(str[c]),str1,1,1)
      if p
        if str[c] = lower(str[c])
          str[c] = str2[p]
        else
          str[c] = upper(str2[p])
        end
      end
    ! english to russian = 2
    of 2
      p = instring(lower(str[c]),str2,1,1)
      if p
        if str[c] = lower(str[c])
          str[c] = str1[p]
        else
          str[c] = upper(str1[p])
        end
      end
    ! toggle language = 3
    of 3
      p = instring(lower(str[c]),str1,1,1)
      if p
        if str[c] = lower(str[c])
          str[c] = str2[p]
        else
          str[c] = upper(str2[p])
        end
      else
        p = instring(lower(str[c]),str2,1,1)
        if p
          if str[c] = lower(str[c])
            str[c] = str1[p]
          else
            str[c] = upper(str1[p])
          end
        end
      end
    end
  end
  return str
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Yufil
Ветеран движения
Сообщения: 978
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

RUS <-> ENG

Сообщение Yufil » 28 Июнь 2018, 9:37

Рассказать юзеру, например, про Punto Switcher или Keyboard Ninja. Или отсюда подобрать...
http://punto-switcher.su/faq/analog-windows/
Ну и в нужных полях явным образом устанавливать кириллическую раскладку, само собой...

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3334
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

RUS <-> ENG

Сообщение Игорь Столяров » 28 Июнь 2018, 9:57

Спасибо ! :) Сейчас попробую. Про пунты - понятно, но это дополнительный чужой софт и т.д.
Вам помочь или не мешать ?

Yufil
Ветеран движения
Сообщения: 978
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

RUS <-> ENG

Сообщение Yufil » 28 Июнь 2018, 10:21

Пунта с CW10 как-то не уживается, курсор теряется, а без неё скучно как-то... А Нинзю ставил юзерам когда-то. Благодарили :D

Аватара пользователя
Admin
Администратор
Сообщения: 3304
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

RUS <-> ENG

Сообщение Admin » 28 Июнь 2018, 10:24

Я в некоторых случая у поля ввода показываю текущий язык
2018-06-28_17-23-36.png
2018-06-28_17-23-36.png (6.01 КБ) 208 просмотров
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3334
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

RUS <-> ENG

Сообщение Игорь Столяров » 28 Июнь 2018, 10:44

Admin писал(а):
28 Июнь 2018, 10:24
Я в некоторых случая у поля ввода показываю текущий язык
Круто ! Но это ведь как-то надо обновлять при переключении раскладки, в т.ч. и в неактивных окнах.
Рассылать по потокам и обрабатывать события … Уф ...
Вам помочь или не мешать ?

Аватара пользователя
Admin
Администратор
Сообщения: 3304
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

RUS <-> ENG

Сообщение Admin » 28 Июнь 2018, 12:33

Игорь Столяров писал(а):
28 Июнь 2018, 10:44
Но это ведь как-то надо обновлять при переключении раскладки, в т.ч. и в неактивных окнах.
Вы это себе тут нафантазировали :)
Это редкий случай применения.
Типа, поле для поиска товара у службы поддержки. И поиск динамически фильтрует очередь по подстроке.
Так что тупо на таймере висит.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3334
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

RUS <-> ENG

Сообщение Игорь Столяров » 28 Июнь 2018, 17:29

Admin писал(а):
28 Июнь 2018, 9:27
Вот на коленке сделал:
Спасибо, всё работает, но потребовался небольшой допил.
Английское: ><RF в русскую ЮБКА не переводилось. :(
Вам помочь или не мешать ?

Ответить