Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

Как скопировать PWideChar в буфер обмена?   Найти похожие ветки 

 
Караваев Дмитрий   (2005-01-29 19:48) [0]

Есть строка двухбайтовых символов типа PWideChar, требуется скопировать её в буфер обмена. Совсем не знаю, как это реализовать!
Кстати, вариант преобразования её в обычную однобайтовую строку и последущее копирование через Clipboard не подходит...


 
vertal ©   (2005-01-29 22:33) [1]


uses windows;
{$B-}
function CopyDataToClipboard(const lpDataPtr: Pointer; const dwDataSize: Cardinal;
 const dwDataFormat: Cardinal): Boolean;
var
 hGMem: hGlobal;
 pGMem: Pointer;
begin
 Result := False;
 hGMem := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, dwDataSize);
 if hGMem <> 0 then
 begin
   pGMem := GlobalLock(hGMem);
   if pGMem <> nil then
   begin
     Move(lpDataPtr^, pGMem^, dwDataSize);
     GlobalUnlock(hGMem);
     if OpenClipboard(0) then
     begin
       Result := EmptyClipboard and (SetClipboardData(dwDataFormat, hGMem) <> 0);
       CloseClipboard;
     end;
   end;
   if not Result then
     GlobalFree(hGMem);
 end;
end;

CopyDataToClipboard(YourWideCharStr, Length(YourWideCharStr) * 2 + 2, CF_UNICODETEXT)


Правда в справке сказано, что стандартный формат CF_UNICODETEXT поддерживается только в NT.


 
default ©   (2005-01-29 22:54) [2]

кошмар!!!
uses Clipbrd;
...
procedure TForm1.Button1Click(Sender: TObject);
var
 S: WideString;
begin
 S := "123";
 Clipboard.AsText := S
end;


 
default ©   (2005-01-29 22:57) [3]

или так не нравится?


 
ShimON ©   (2005-01-29 23:04) [4]

Ему нужно ведь PWideString запихнуть...


 
default ©   (2005-01-29 23:06) [5]

ну пусть запихивает


 
vertal ©   (2005-01-30 17:58) [6]

> default c   (29.01.05 22:54) [2]
> кошмар!!!

> procedure TForm1.Button1Click(Sender: TObject);
> var
> S: WideString;
> begin
> S := "123";
> Clipboard.AsText := S
> end;

> default c   (29.01.05 22:57) [3]
> или так не нравится?

Человек сказал, что вариант с предварительным преобразованием в строку с однобайтовыми символами не подходит (может быть, есть символы, непредставимые в текущей кодовой странице в win). А при присвоении Clipboard.AsText := S именно такое преобразование и происходит. И с помощью объекта Clipboard добиться сабжа вообще невозможно, так как там процедура SetBuffer находится в protected - части деклараций методов.



Страницы: 1 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
3-1105556863
про
2005-01-12 22:07
2005.02.13
Sortirovka zapisej v alfavitnom porjadke


8-1099039831
evg13
2004-10-29 12:50
2005.02.13
Как вывести форматированный текст на bitmap


6-1101908945
Apolius
2004-12-01 16:49
2005.02.13
Проблема с Socket.OnRead


1-1107059167
ТехникПТО
2005-01-30 07:26
2005.02.13
Хранение данных


3-1105612348
Pavelkq
2005-01-13 13:32
2005.02.13
Что выбрать и что изучить(почитать)?