Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с кириллицей и буфером обмена [D7, WinXP]


fylhtq ©   (2004-07-30 13:48:00) 

Не подскажете, уважаемые, как обойти данную проблему:
При копировании в буфер обмена Clipboard.asText кириллического текста - вставляется абракадабра.


fylhtq   (2004-07-30 16:14:00) [1]

2clickmaker
Агромнейший спасибо!


clickmaker   (2004-07-30 15:49:00) [2]

попробуй так

procedure SetClipboardText(const S: string);
 var
   wsz: PWideChar;
   dwSize: Cardinal;
   hData: Cardinal;
 begin
   if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin

     dwSize := (Length(S)+1) * SizeOf(WideChar);
     hData := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, dwSize);
     wsz := PWideChar(GlobalLock(hData));
     StringToWideChar(S, wsz, Length(S)+1);
     GlobalUnlock(hData);
     Clipboard.SetAsHandle(CF_UNICODETEXT, hData);
   end else
     Clipboard.AsText := S;
 end;


GrayFace   (2004-07-30 15:25:00) [3]

В XP - тоже.


Sancho   (2004-07-30 14:24:00) [4]

Var
 ALayout: HKL
........
PostMessage(Application.MainForm.Handle,
WM_INPUTLANGCHANGEREQUEST, 0, ALayout);

ALayout принимает значения: Английская_раскладка = $4090409; Русская_раскладка = $4190419. В винде (2K и, наверное, XP) есть такой косяк: при копировании в буфер обмена русского текста копируются крякозяблики (когда включена английская раскладка), меняешь раскладку и все нормально


fylhtq   (2004-07-30 14:12:00) [5]

В частности в Блокнот


clickmaker   (2004-07-30 14:10:00) [6]


> fylhtq ©   (30.07.04 13:48)

Куда вставляется?


fylhtq   (2004-07-30 14:06:00) [7]

Ух... А можно на пальцах, ежели не трудно?


Sancho   (2004-07-30 14:01:00) [8]

Попробуй перед копированием текста в буфер поменять раскладку клавиатуры (надо послать главному окну приложения сообщение WM_INPUTLANGCHANGEREQUEST).


Наверх

Титульная страница Поиск, карта сайта Написать письмо