![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кодировкой
-Mouse- © (2007-05-10 18:18:00)Здравствуйте мастера. Имееться проблема с TMemo. При копирования русского текста из любого документа в него (в TMemo) получаются "крякозяблики". Как можно решить эту проблему?
Delphi 2006.
Заранее спасибо.
Anatoly Podgoretsky (2007-05-11 13:23:00) [1]> Германн (11.05.2007 02:29:06) [6]
MSOffice97 знал
sniknik (2007-05-11 11:50:00) [2]> А можно ли как-то перехватывать буфер обмена и проверять вручную что там с скопированным текстом из моей программы( или вставляемым в мою программу)?
можно вообще все! ну, кроме того что нельзя...
со скопированным в твою прогу из другой, х.з. возможно уже поздно локаль менять (не пробовал, но можно... тому кому нужно ;).
копировать из твоей проги довольно просто, надо поменять 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 в который и нужно выделенную добавку вставить)
-Mouse- (2007-05-11 10:30:00) [3]
> Использовать компоненты, поддерживающие Unicode.
Например? (на подобии TMEMO)
А можно ли как-то перехватывать буфер обмена и проверять вручную что там с скопированным текстом из моей программы( или вставляемым в мою программу)?
sniknik (2007-05-11 09:00:00) [4]> А что, разве родные для Win98 программы знали про Юникод?
не помню...
> Тот же MSOffice97, к примеру?
ну, аксесс 97 работает с базами от 2000го у которой поля в юникоде... т.е. можно предположить...
лучше проверь на XP у тебя это есть? и когда обновление ставил в последний раз.
> Что такие юзеры, что не в состоянии переключить раскладку?
при чем тут в состоянии они или нет? если сомнения автора в необходимости это всем обьяснять.
я его в принципе поддерживаю, лучше 1 раз исправить поведение в программе чем сто раз обьяснять, что делать надо вот так а не иначе.
Loginov Dmitry (2007-05-11 07:37:00) [5]> Я же не буду объяснять юзеру, что чтобы скопировать - надо
> переключится на русский язык ввода.
Что такие юзеры, что не в состоянии переключить раскладку?
Бывает.
(Вон у нас в одном ВУЗе на IT аспирант учится (будущий кандидат), информатику преподает, дык, не знает, оказывается)
Германн (2007-05-11 02:29:00) [6]
> sniknik © (11.05.07 00:48) [5]
>
> > Вернуться в Win98 :)
> а что там такого не было?
>
А что, разве родные для Win98 программы знали про Юникод? Тот же MSOffice97, к примеру?
sniknik (2007-05-11 00:48:00) [7]> Вернуться в Win98 :)
а что там такого не было?
кстати у меня сейчас в XP тоже нет... не знаю почему, помню было, не только из мемо, и не столько из него, сколько из дельфей в форум при копировании все русские комментарии "ломались", а вот счас пробую и не могу воспроизвести... и с приложения с английской раскладки в русскую копирую и наоборот, и все нормально...
правда недавно (буквально вчера) последнее обновление винды поставил, может исправили наконец? (прекратили борьбу с неюникодными приложениями ;о))
проверил бы кто?...
Asail (2007-05-11 00:14:00) [8]
> Если ли какието другие способы решения проблемы?
Использовать компоненты, поддерживающие Unicode.
Германн (2007-05-11 00:04:00) [9]
> Если ли какието другие способы решения проблемы?
Вернуться в Win98 :)
-Mouse- (2007-05-10 22:05:00) [10]Ну а другие же приложения как-то нашли выход. Я же не буду объяснять юзеру, что чтобы скопировать - надо переключится на русский язык ввода. Если ли какието другие способы решения проблемы?
Desdechado (2007-05-10 18:22:00) [11]Копировать в "любом документе" при включенной русской раскладке.