Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(hkdkest @  16.6.2009,  10:07 Найти цитируемый пост)
а почему так? 

Точно сказать не могу. Очевидно в буфер помещаются символы в той кодировке, которая в данный момент на раскладке.

Автор: V0LT 16.6.2009, 19:27
Несовсем так ... при разных раскладках система использует различные кодировки (причём есть совпадающие а есть различные насколько помню для разных шрифтов) ... попробуйте погуглить ... есть файл реестра который это исправляет

Похоже на то как запустив приложение видишь закорючки ... и потом в реестре поменяв некий ключ на 1251 всё делается тип топ

Автор: former 16.6.2009, 21:27
Цитата(V0LT @  16.6.2009,  19:27 Найти цитируемый пост)
всё делается тип топ

Да, но тогда не исключена ситуация, когда пользователь при попытке копирования какого-нибудь спец символа  из таблицы символов при вставке получит не его, а неизвестно что.

Автор: Alexeis 16.6.2009, 21:58
  Проблема состоит в конвертировании Ansi->Unicode->Ansi. Винда всегда работает с юникодом, поэтому при копировании в буфер обмена операция Ansi->Unicode неизбежна и она производится верно, а вот для правильной операции Unicode->Ansi уже требуется знать таблицу символов, вот винда и пытается определить таблицу символов по раскладке клавиатуры. В Delphi 2009 или при использовании TNTControls или при использовании чистого WinAPI с использованием юникодных контролов такой проблемы не будет при вставке в юникодный контрол. При вставке в чужой Ansi контрол, проблема снова проявиться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)