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

Вниз

Проблема с кодировкой   Найти похожие ветки 

 
-Mouse-   (2007-05-10 18:18) [0]

Здравствуйте мастера. Имееться проблема с TMemo. При копирования русского текста из любого документа в него (в TMemo) получаются "крякозяблики". Как можно решить эту проблему?
Delphi 2006.
Заранее спасибо.


 
Desdechado ©   (2007-05-10 18:22) [1]

Копировать в "любом документе" при включенной русской раскладке.


 
-Mouse-   (2007-05-10 22:05) [2]

Ну а другие же приложения как-то нашли выход. Я же не буду объяснять юзеру, что чтобы скопировать - надо переключится на русский язык ввода. Если ли какието другие способы решения проблемы?


 
Германн ©   (2007-05-11 00:04) [3]


> Если ли какието другие способы решения проблемы?

Вернуться в Win98 :)


 
Asail   (2007-05-11 00:14) [4]


> Если ли какието другие способы решения проблемы?

Использовать компоненты, поддерживающие Unicode.


 
sniknik ©   (2007-05-11 00:48) [5]

> Вернуться в Win98 :)
а что там такого не было?

кстати у меня сейчас в XP тоже нет... не знаю почему, помню было, не только из мемо, и не столько из него, сколько из дельфей в форум при копировании все русские комментарии "ломались", а вот счас пробую и не могу воспроизвести... и с приложения с английской раскладки в русскую копирую и наоборот, и все нормально...
правда недавно (буквально вчера) последнее обновление винды поставил, может исправили наконец? (прекратили борьбу с неюникодными приложениями ;о))
проверил бы кто?...


 
Германн ©   (2007-05-11 02:29) [6]


> sniknik ©   (11.05.07 00:48) [5]
>
> > Вернуться в Win98 :)
> а что там такого не было?
>

А что, разве родные для Win98 программы знали про Юникод? Тот же MSOffice97, к примеру?


 
Loginov Dmitry ©   (2007-05-11 07:37) [7]

> Я же не буду объяснять юзеру, что чтобы скопировать - надо
> переключится на русский язык ввода.


Что такие юзеры, что не в состоянии переключить раскладку?
Бывает.
(Вон у нас в одном ВУЗе на IT аспирант учится (будущий кандидат), информатику преподает, дык, не знает, оказывается)


 
sniknik ©   (2007-05-11 09:00) [8]

> А что, разве родные для Win98 программы знали про Юникод?
не помню...

> Тот же MSOffice97, к примеру?
ну, аксесс 97 работает с базами от 2000го у которой поля в юникоде... т.е. можно предположить...

лучше проверь на XP у тебя это есть? и когда обновление ставил в последний раз.

> Что такие юзеры, что не в состоянии переключить раскладку?
при чем тут в состоянии они или нет? если сомнения автора в необходимости это всем обьяснять.
я его в принципе поддерживаю, лучше 1 раз исправить поведение в программе чем сто раз обьяснять, что делать надо вот так а не иначе.


 
-Mouse-   (2007-05-11 10:30) [9]


> Использовать компоненты, поддерживающие Unicode.

Например? (на подобии TMEMO)

А можно ли как-то перехватывать буфер обмена и проверять вручную что там с скопированным текстом из моей программы( или вставляемым в мою программу)?


 
sniknik ©   (2007-05-11 11:50) [10]

> А можно ли как-то перехватывать буфер обмена и проверять вручную что там с скопированным текстом из моей программы( или вставляемым в мою программу)?
можно вообще все! ну, кроме того что нельзя...

со скопированным в твою прогу из другой, х.з. возможно уже поздно локаль менять (не пробовал, но можно... тому кому нужно ;).

копировать из твоей проги довольно просто, надо поменять SetAsText (либо SetBuffer).
ну и пробовать в твою менять GetAsText.
после записи в первом случае и перед чтением во втором надо поменять локализацию на русскую ($419), менять придется в скопированном к себе и подключенному к программе модуле Clipbrd (чтоб генофонд не трогать).
как поменять видно с следующем примере

procedure CopyStringToClipboard(const Value: String);
const
 RusLocale = (SUBLANG_DEFAULT shl $A) or LANG_RUSSIAN;
var
 hMem: THandle;
 pData: Pointer;
begin
 Clipboard.Open;
 try
   Clipboard.AsText := Value;
   hMem := GlobalAlloc(GMEM_MOVEABLE, SizeOf(DWORD));
   try
     pData := GlobalLock(hMem);
     try
       DWORD(pData^) := RusLocale;
     finally
       GlobalUnlock(hMem);
     end;
       Clipboard.SetAsHandle(CF_LOCALE, hMem);
   finally
     GlobalFree(hMem);
   end;

 finally
   Clipboard.Close;
 end;
end;

выделенные строки как раз меняют локализацию (Clipboard.AsText до этого это фактически вызов SetAsText в который и нужно выделенную добавку вставить)


 
Anatoly Podgoretsky ©   (2007-05-11 13:23) [11]

> Германн  (11.05.2007 02:29:06)  [6]

MSOffice97 знал



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

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

Наверх




Память: 0.49 MB
Время: 0.039 c
5-1154367878
anton773
2006-07-31 21:44
2007.05.27
добавление новых свойств webbrowser


2-1178524785
Konus
2007-05-07 11:59
2007.05.27
работа с TEdit, формат числа 1.11


15-1177603378
ArtemESC
2007-04-26 20:02
2007.05.27
Опрос - 10 любимых фильмов....


2-1178585925
Booka Shade
2007-05-08 04:58
2007.05.27
Поиск в файле, по маске.


2-1178797080
Kolan
2007-05-10 15:38
2007.05.27
Как просто сделать из главной формы не главную?