Текущий архив: 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.47 MB
Время: 0.044 c