RtfControl.GetText() возвращает текст вопросиками

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
ThePPK
Посетитель
Сообщения: 30
Зарегистрирован: 19 Сентябрь 2010, 21:54

RtfControl.GetText() возвращает текст вопросиками

Сообщение ThePPK »

Добрый день!

Работаем с Clarion 6.1. После вызова GetText(myText,0,1000) в myText русский текст попадает в виде знаков вопроса: '?', при этом цифры, английские буквы и знаки попадают нормально. Наверное, это проблемы с кодировкой. Как такое можно обойти?

Спасибо!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2379
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 19 раз

Re: RtfControl.GetText() возвращает текст вопросиками

Сообщение Губин Игорь »

Решается принудительным переключение в поле RTF на русский язык (можно перед копированием)

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

    CASE FIELD()
    OF ?RTFString
      CASE EVENT()
      OF EVENT:Selected
            SwitchKBD(Russian)
У меня это делается при выборе поля, но это специфическое решение, т.к. идёт потоковый перевод базы из RTF в обычный текст

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

SwitchKBD   Procedure(KBDLayout)
AKL  Unsigned
TMP  CSTRING(20)
    Code
        i# = GetKeyboardLayoutNameA(Tmp)
        if Clip(Tmp) <> Clip(KBDLayout)
            AKL = ActivateKeyBoardLayout(1,0)
        end

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

        SwitchKBD(String)
Latin       CSTRING('00000409')
Russian  CSTRING('00000419')
Это я только кажусь дураком! На самом деле я полный идиот!
ThePPK
Посетитель
Сообщения: 30
Зарегистрирован: 19 Сентябрь 2010, 21:54

Re: RtfControl.GetText() возвращает текст вопросиками

Сообщение ThePPK »

Игорь, огромное Вам спасибо, все получилось!! :-)
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: RtfControl.GetText() возвращает текст вопросиками

Сообщение Артур »

Игорь, подскажи пожалуйста где документированы функции, которые ты использовал?
Любить и обещать ничего не стоит
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2379
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 19 раз

Re: RtfControl.GetText() возвращает текст вопросиками

Сообщение Губин Игорь »

MSDN

MODULE('')
GetKeyboardLayoutList(SIGNED,*UNSIGNED),SIGNED,PASCAL,RAW
ActivateKeyboardLayout(UNSIGNED,UNSIGNED),UNSIGNED,PASCAL
GetKeyboardLayoutName(*LPSTR),BOOL,PASCAL,RAW,NAME('GetKeyboarfLayoutName')
GetKeyboardLayout(DWORD),UNSIGNED,PASCAL
GetKeyboardLayoutNameA(*LPSTR),BOOL,PASCAL,RAW
End

http://msdn.microsoft.com/en-us/library/ms646289

На самом деле функция SwitchKBD не совсем доделана, она рассчитана только на две раскладки, но там всё просто переделать если их у тебя несколько.

А использовал не я. Функцию SwitchKBD я позаимствовал у кого-то из наших коллег.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: RtfControl.GetText() возвращает текст вопросиками

Сообщение Артур »

Спасибо за исчерпывающий ответ
Любить и обещать ничего не стоит
Ответить