Добрый день!
Работаем с Clarion 6.1. После вызова GetText(myText,0,1000) в myText русский текст попадает в виде знаков вопроса: '?', при этом цифры, английские буквы и знаки попадают нормально. Наверное, это проблемы с кодировкой. Как такое можно обойти?
Спасибо!
RtfControl.GetText() возвращает текст вопросиками
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
ThePPK
- Губин Игорь
- Шубуршун
- Сообщения: 2584
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
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')
Это я только кажусь дураком! На самом деле я полный идиот!
Губин Игорь
ThePPK
Re: RtfControl.GetText() возвращает текст вопросиками
Игорь, подскажи пожалуйста где документированы функции, которые ты использовал?
Любить и обещать ничего не стоит
Артур
- Губин Игорь
- Шубуршун
- Сообщения: 2584
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
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() возвращает текст вопросиками
Спасибо за исчерпывающий ответ
Любить и обещать ничего не стоит
Артур
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)