Страница 1 из 1
RtfControl.GetText() возвращает текст вопросиками
Добавлено: 05 Июль 2011, 13:58
ThePPK
Добрый день!
Работаем с Clarion 6.1. После вызова GetText(myText,0,1000) в myText русский текст попадает в виде знаков вопроса: '?', при этом цифры, английские буквы и знаки попадают нормально. Наверное, это проблемы с кодировкой. Как такое можно обойти?
Спасибо!
Re: RtfControl.GetText() возвращает текст вопросиками
Добавлено: 05 Июль 2011, 16:12
Губин Игорь
Решается принудительным переключение в поле 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')
Re: RtfControl.GetText() возвращает текст вопросиками
Добавлено: 05 Июль 2011, 21:25
ThePPK
Игорь, огромное Вам спасибо, все получилось!!

Re: RtfControl.GetText() возвращает текст вопросиками
Добавлено: 05 Июль 2011, 21:59
Артур
Игорь, подскажи пожалуйста где документированы функции, которые ты использовал?
Re: RtfControl.GetText() возвращает текст вопросиками
Добавлено: 05 Июль 2011, 22:35
Губин Игорь
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 я позаимствовал у кого-то из наших коллег.
Re: RtfControl.GetText() возвращает текст вопросиками
Добавлено: 06 Июль 2011, 12:53
Артур
Спасибо за исчерпывающий ответ