Добрый день!
Работаем с Clarion 6.1. После вызова GetText(myText,0,1000) в myText русский текст попадает в виде знаков вопроса: '?', при этом цифры, английские буквы и знаки попадают нормально. Наверное, это проблемы с кодировкой. Как такое можно обойти?
Спасибо!
RtfControl.GetText() возвращает текст вопросиками
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2379
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 19 раз
Re: RtfControl.GetText() возвращает текст вопросиками
Решается принудительным переключение в поле RTF на русский язык (можно перед копированием)
У меня это делается при выборе поля, но это специфическое решение, т.к. идёт потоковый перевод базы из RTF в обычный текст
Код: Выделить всё
CASE FIELD()
OF ?RTFString
CASE EVENT()
OF EVENT:Selected
SwitchKBD(Russian)
Код: Выделить всё
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')
Это я только кажусь дураком! На самом деле я полный идиот!
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 я позаимствовал у кого-то из наших коллег.
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 я позаимствовал у кого-то из наших коллег.
Это я только кажусь дураком! На самом деле я полный идиот!
Re: RtfControl.GetText() возвращает текст вопросиками
Спасибо за исчерпывающий ответ
Любить и обещать ничего не стоит