Главная страница
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.061 c
2-1178433546
Doom-2
2007-05-06 10:39
2007.05.27
новое подключение Flash или ZIV


9-1149530476
-=OpeR=-
2006-06-05 22:01
2007.05.27
Помогите с алгоритм оптимального размещения


15-1177425719
NeyroSpace
2007-04-24 18:41
2007.05.27
Почему у Microsoft ничего не выйдет с .Net


15-1178013508
DillerXX
2007-05-01 13:58
2007.05.27
Тоска по VCL


15-1177936530
Константинов
2007-04-30 16:35
2007.05.27
чтение DWD-RW