Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
15-1201110408
xayam
2008-01-23 20:46
2008.02.24
подскажите алгоритм поиск циклов в несвязанном графе


2-1201517761
Neo
2008-01-28 13:56
2008.02.24
Вопрос по SQL


6-1180002451
FireMan_Alexey
2007-05-24 14:27
2008.02.24
snova Proxy!


4-1183721054
shamanski
2007-07-06 15:24
2008.02.24
Часы реального времени (RTC Alarm)


15-1201220309
Riply
2008-01-25 03:18
2008.02.24
К вопросу "каким способом надо решать задачу"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский