Главная страница
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.014 c
8-1173158554
OlegM
2007-03-06 08:22
2008.02.24
Склеить несколько WAV в один


15-1201188142
Anatoly Podgoretsky
2008-01-24 18:22
2008.02.24
Что хотят, то и творят.


2-1201686554
Guriev
2008-01-30 12:49
2008.02.24
(Работа с ADO) Kак организовать создание отчёта (НЕ таблицу)?


8-1174430156
Константинов
2007-03-21 01:35
2008.02.24
Как выудить дополнительныую информацию о jpg файле?


15-1200763466
мойипизвестен
2008-01-19 20:24
2008.02.24
А что будет если...