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

Вниз

Как скопировать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
3-1105336148
Sens
2005-01-10 08:49
2005.02.13
Помогите сделать запрос с двойной связью


3-1105879132
moonwell
2005-01-16 15:38
2005.02.13
удаление записей


8-1098894068
Sonic_gd
2004-10-27 20:21
2005.02.13
Неработает mediaPlayer


3-1105162091
va
2005-01-08 08:28
2005.02.13
БД - IntraWeb


3-1105699715
Pavelkq
2005-01-14 13:48
2005.02.13
MS Access + ADO = Delphi





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