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

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

MS Word и буфер обмена [D7, 95/98, XP]


_Shuler_ ©   (2008-01-13 19:53:00) 

всем хай!!!
вставляю из буфера обмена русский текст  в документ ворда и пояляются какие-то крякозяблики(((.
если вставить в другой текстовый редактор, то все нормально.
но в виндоузовском блокноте теже глюки. Подскажите а чем проблема???
может из-за кодировки???
Подскажите ПЛЗ


_Shuler_   (2008-01-17 11:10:00) [1]


> {RASkov} ©   (13.01.08 23:51) [15]

Спасибо.
Разобрался:)


Amoeba   (2008-01-15 23:38:00) [2]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780
Тут много чего интересного, особенно в обсуждении. Да и здесь на форуме в конце прошлого года было немало конкретно полезного.


ketmar   (2008-01-15 22:00:00) [3]

>[16] _Shuler_ (15.01.08 21:20)
>но что-то я не смог разобраться с этим Unicode(((
>мож кто еще поможет.ПЛЗ

запросто. магазин хозтоваров->метла->нет проблем с Unicode.
или учимся искать в интернете и справках, да вдумчво читать найденое.


_Shuler_   (2008-01-15 21:20:00) [4]

мда ;жаль.
но что-то я не смог разобраться с этим Unicode(((
мож кто еще поможет.ПЛЗ


{RASkov}   (2008-01-13 23:51:00) [5]

> [13] _Shuler_   (13.01.08 23:07)

Не уверен в правильности("тупая переделка"), но всеж:
procedure SetBuffer(Format: Word; var Buffer; Size: Integer);
var
 Data: THandle;
 DataPtr: Pointer;
begin
 OpenClipboard(0);
 try
   Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
   try
     DataPtr := GlobalLock(Data);
     try
       Move(Buffer, DataPtr^, Size);
       SetClipboardData(Format, Data);
     finally
       GlobalUnlock(Data);
     end;
   except
     GlobalFree(Data);
     raise;
   end;
 finally
   CloseClipboard;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const S: PWideChar ='Тест русского текста Test English text Яя';
begin
 SetBuffer(CF_UNICODETEXT, PWideChar(S)^, Length(S)*2+2);
end;

(Для раздумья)


Anatoly Podgoretsky   (2008-01-13 23:08:00) [6]

> _Shuler_  (13.01.2008 23:07:13)  [13]

Это текст из модуля ClipBrd остальное сам там посмотришь, или можешь сам все сделать напрямую через WinAPI.


_Shuler_   (2008-01-13 23:07:00) [7]

что-то не получается.(((
>>>SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
делфи говорит что не знает такого.


Anatoly Podgoretsky   (2008-01-13 22:47:00) [8]

Мне лень заниматься экспериментами, попробуй сам переделать эту функцию из генофонда.
procedure TClipboard.SetAsText(const Value: string);
begin
  SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
end;


_Shuler_   (2008-01-13 22:05:00) [9]

> Anatoly Podgoretsky ©   (13.01.08 22:00) [10]

  > Считай за глюк, поскольку ты работаешь по технологие ДОС,
  >  а не Windows NTВ буфер надо помещать в Юникоде, а не ANSI

ok.
Подскажите как тогда в Юникоде помещать
или
как сменить раскладку клавы в ворде.
PLZ


Anatoly Podgoretsky   (2008-01-13 22:00:00) [10]

> _Shuler_  (13.01.2008 20:30:06)  [6]

Считай за глюк, поскольку ты работаешь по технологие ДОС, а не Windows NT
В буфер надо помещать в Юникоде, а не ANSI


_Shuler_   (2008-01-13 21:34:00) [11]

наверно так бужет корректней: как сменить раскладку именно в ворде???
Спасибо!


_Shuler_   (2008-01-13 21:31:00) [12]

возникла еще проблемка.
после подключения к ворду (раскладка у меня по умолчанию english) перед вставкой не успеваю сменить раскладку(((.
делаю так:  LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);
как перед вставкой сменить раскладку?


{RASkov}   (2008-01-13 20:36:00) [13]

фича


_Shuler_   (2008-01-13 20:30:00) [14]

хы. действительно работает. Спасибо.
Вот только не пойму: это как считать за глюк или так и должно быть???


{RASkov}   (2008-01-13 20:27:00) [15]

> [4] _Shuler_   (13.01.08 20:03)

Проводи операцию копирование-вставка при русской раскладке...


_Shuler_   (2008-01-13 20:03:00) [16]

но с английсеом все нормально. только русский глючит...


_Shuler_   (2008-01-13 20:02:00) [17]

Clipboard.AsText := clipboard.AsText+'sdfdg'

а в ворде вот  так просто:
wordApplication1.Selection.Paste;


Dib@zol   (2008-01-13 19:59:00) [18]

показывай код добавления в буфер.


savyhinst   (2008-01-13 19:57:00) [19]


> может из-за кодировки

Именно из-за неё.


Наверх

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