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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.046 c
15-1177986140
Cj
2007-05-01 06:22
2007.05.27
Статья на сайт№2


15-1177872605
antonn
2007-04-29 22:50
2007.05.27
Вопросик по регулярным выражениям. В пхп:)


3-1173273530
Silver...
2007-03-07 16:18
2007.05.27
Изменить порядок записей в DBGrid


15-1177498566
SerJaNT
2007-04-25 14:56
2007.05.27
Протестировать сайт


3-1173781864
Дмитрий А.
2007-03-13 13:31
2007.05.27
Как через ADO из Delphi создать столбец в таблице Access?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский