![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.02.2012
Сообщений: 6
|
![]()
Дорого времени суток!!!
Ситуация такая. Раньше при написании своих программ, когда мне нужно было текстовое поле, использовал стандартный "EDIT" - он имеет все основные функции редактирования, удобен и т.д. Но при копировании русских букв в буфер обмена и последующей вставке текста в любой обычный редактор, например, блокнот, ИНОГДА вместо русских букв вставлялись латинские буквы с точками и крючками сверху. Думаю, многие с таким сталкивались. Чтобы исправить эту проблему я написал свое текстовое поле. Код копирования в буфер обмена взял стандартный - во многих статьях один и тот же описан. Но даже в этом случае проблема не ушла. Подскажите, пожалуйста, как это решить на уровне своей программы, чтобы не трогать настройки Windows и подобные внешние вещи. Ведь как-то блокнот и другие редакторы нормально справляются с данной задачей. вот код, который я использую для копирования в буфер обмена: Код:
Последний раз редактировалось nik2009nik; 11.01.2013 в 19:23. Причина: добавление рисунка |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
при копировании должна быть русскач раскладка.
или же использовать юникод. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 11.02.2012
Сообщений: 6
|
![]() Цитата:
Юникод - идеальный вариант, но я хотел найти вариант именно с однобайтовыми ANSI символами, чтобы не перекодировать при каждом копировании. И я нашел решение. Сканирование буфера обмена показало, в чем была причина - CF_LOCALE - строка из 3-х символов, означающая текущую языковую кодировку текста. Для кириллицы нужно, чтобы CF_LOCALE была равна (25, 4 и завершающий символ 0). Устанавливая при копировании в буфер обмена этот параметр, все будет работать, как надо. вот какой теперь стала функция копирования в буфер обмена: Код:
Этот вариант с ANSI подходит для простых приложений, для русских версий Windows, но для более качественной и универсальной работы приложения необходимо использовать Юникод (CF_UNICODETEXT) Последний раз редактировалось nik2009nik; 11.01.2013 в 22:18. |
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 05.03.2015
Сообщений: 8
|
![]()
ДА !
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 05.03.2015
Сообщений: 8
|
![]()
ЭТО САМОЕ ТО ! Перед копированием сменил раскладку с Енг на Рус и теперь нет крякозяблей.
С кодом программы разбираться не стану, хватает и того. Огромное спасибо ! Вот Вы маг программирования ! Огромнейший ПЛЮС Вам !!! СПАСИБО ! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Копирование сообщения в буфер обмена | sseaar | Общие вопросы Delphi | 1 | 28.09.2012 06:01 |
Копирование в буфер обмена | Abuhamed | JavaScript, Ajax | 2 | 05.02.2012 02:20 |
Копирование в буфер обмена | motorway | JavaScript, Ajax | 1 | 10.04.2011 07:36 |
Копирование в буфер обмена | Xanex | Общие вопросы Delphi | 5 | 18.05.2009 23:13 |
Копирование структуры в буфер обмена | bill | Общие вопросы Delphi | 14 | 20.11.2007 17:22 |