| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Проблема с кодировкой при копировании из MEMO |
| Автор: hkdkest 15.6.2009, 15:20 |
| Когда в приложении написанном в дельфи копируешь из мемо русский текст и вставляешь в блокнот получаются крякозяблики, как это исправить??? шрифт - вербана кириллический |
| Автор: former 16.6.2009, 01:57 |
| Перед копированием текста переключи раскладку клавиатуры на RU. |
| Автор: hkdkest 16.6.2009, 10:07 |
| Спасибо! помогло, а почему так? |
| Автор: former 16.6.2009, 15:52 |
Точно сказать не могу. Очевидно в буфер помещаются символы в той кодировке, которая в данный момент на раскладке. |
| Автор: V0LT 16.6.2009, 19:27 |
| Несовсем так ... при разных раскладках система использует различные кодировки (причём есть совпадающие а есть различные насколько помню для разных шрифтов) ... попробуйте погуглить ... есть файл реестра который это исправляет Похоже на то как запустив приложение видишь закорючки ... и потом в реестре поменяв некий ключ на 1251 всё делается тип топ |
| Автор: former 16.6.2009, 21:27 |
Да, но тогда не исключена ситуация, когда пользователь при попытке копирования какого-нибудь спец символа из таблицы символов при вставке получит не его, а неизвестно что. |
| Автор: Alexeis 16.6.2009, 21:58 |
| Проблема состоит в конвертировании Ansi->Unicode->Ansi. Винда всегда работает с юникодом, поэтому при копировании в буфер обмена операция Ansi->Unicode неизбежна и она производится верно, а вот для правильной операции Unicode->Ansi уже требуется знать таблицу символов, вот винда и пытается определить таблицу символов по раскладке клавиатуры. В Delphi 2009 или при использовании TNTControls или при использовании чистого WinAPI с использованием юникодных контролов такой проблемы не будет при вставке в юникодный контрол. При вставке в чужой Ansi контрол, проблема снова проявиться. |