Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

Как побороть беду с кодировкой?   Найти похожие ветки 

 
Still Swamp   (2008-01-23 11:52) [0]

Есть форма на которой лежит TEdit. Я копирую из него текст "Астрономические сайты" в буфер обмена нажав Ctrl+C.

Далее открываю Word, или например мессенджер, и получаю из буфера нечто вроде "Àñòðîíîìè÷åñê& #232;å ñàéòû".

Как это забороть?

Пользую BDS, хотя проблема эта начиная с третьих дельфей имеется.


 
Palladin ©   (2008-01-23 11:54) [1]

Это общая проблема приложений не поддерживающих юникоде, копирование/вставка должна происходить при включеной раскладе киррилицы


 
Still Swamp   (2008-01-23 11:59) [2]

Да .... действительно работает.
А это беда моя, системы, или принимающего приложения?
Я могу как нить исправить эту ситуацию?


 
Palladin ©   (2008-01-23 12:00) [3]

Ты - нет, повторяю еще раз (может в первый как-то коряво написал, подчерк у меня не ахти), это общая проблема приложений не поддерживающий юникоде.


 
Still Swamp   (2008-01-23 12:01) [4]

Так.... тогда сформулирую иначе. :)
Кто в данном случае юникод не поддерживает, мое приложение или получатель?


 
Palladin ©   (2008-01-23 12:01) [5]

Не поддерживает Delphi, ты тут ни причем.


 
Palladin ©   (2008-01-23 12:03) [6]

Хотя ты в общем-то можешь исправить ситуацию перехватывая копирование в буффер и вставляя туда вручную юникоде...


 
Still Swamp   (2008-01-23 12:11) [7]

Я не совсем представляю себе механизм взаимодействия приложения с буфером.
ПОтому может быть задам несколько глупый вопрос. Тем не менее...

А что можно сделать что бы мое приложение могло поддерживать юникод.
Допустим если не использовать на форме VCL а что нить иное. Это поможет?


 
Still Swamp   (2008-01-23 12:12) [8]

Ага. Те я вешаю в приложении перехват сообщения WM_что_то и сам воюю с буфером дальше?


 
Palladin ©   (2008-01-23 12:15) [9]

ну во первых ты не можешь не использовать VCL используя форму :)
а во вторых есть компоненты поддерживающие юникоде TNT Unicode Controls, но есть одно но, они платные... в принципе можешь поискать в инете аналоги... а можешь и купить...


 
Amoeba ©   (2008-01-23 12:24) [10]

Здесь много полезной информации по данному вопросу:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780


 
Still Swamp   (2008-01-23 12:31) [11]

Спасибо. Пошел разбираться.


 
Still Swamp   (2008-01-23 12:39) [12]

Не... "просто добавь воды" не прошло.
Если вернуться к вопросу о перехвате. WM_COPY, WM_CUT пойманные для формы, как я понимаю это то что мне нужно?


 
Palladin ©   (2008-01-23 12:42) [13]

не все так просто с перехватом, ты его не в форме должен делать, а в контроле... проще всего создать свой popupmenu замест системного


 
ПостОвый терминатор ©   (2008-01-23 13:31) [14]


> Palladin ©   (23.01.08 11:54) [1]
> Это общая проблема приложений не поддерживающих юникоде,
>  копирование/вставка должна происходить при включеной раскладе
> киррилицы


Следует ли это понимать так, что это поможет:

var
 russian: HKL;
.....
russian := LoadKeyboardLayout("00000419", 0);
.....
ActivateKeyboardLayout(russian, 0);


то есть программный переход на раскладку кириллицы


 
Царев Евгений ©   (2008-01-23 15:36) [15]


> то есть программный переход на раскладку кириллицы


События у Edit"a OnCopy нет.
Куда ты это засунешь читай Palladin ©   (23.01.08 12:42) [13]
а даже если через перехват сообщений с TAppEvents или подругому то
russian := LoadKeyboardLayout("00000419", 0);//нагло и вроде как дурным тоном считается,
но если все-таки отбросить морали то, только для русскоязычной программы, а я например француз :) И мне бы не очень понравилась прога которая вытянет раскладку которой у меня нет.

Хотя для данной ветки это оффтоп


 
MetalFan ©   (2008-01-23 19:19) [16]

можно с пом.примерно такой функции закинуть текст в буфер при любой текущей раскладке:
 function SetClipboardText( const AText: string ): Boolean;
 var
   h:THandle;
 begin
   Clipboard.Open;
   Clipboard.AsText := AText;
   h := Clipboard.GetAsHandle(CF_TEXT);
   SetClipboardData(CF_LOCALE, h);
   Clipboard.Close;
 end;



Страницы: 1 вся ветка

Текущий архив: 2008.02.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
6-1180947886
ziArt
2007-06-04 13:04
2008.02.24
Отключить брандмауер ХР


4-1183713037
Dib@zol
2007-07-06 13:10
2008.02.24
TrackBar+API


15-1200903906
Ega23
2008-01-21 11:25
2008.02.24
Об особенностях FireBird


2-1201541016
Inslave
2008-01-28 20:23
2008.02.24
Ini + checbox


15-1200970939
Slider007
2008-01-22 06:02
2008.02.24
С днем рождения ! 22 января 2008 вторник