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

Вниз

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

 
Kolan ©   (2007-06-16 14:39) [0]

Копирую так:
Clipboard.SetTextBuf(PAnsiChar(SomeText));
SomeText — русские символы

Вставляю, одини кракозябры, как правильно?


 
Loginov Dmitry ©   (2007-06-16 14:51) [1]

Вот содержимое недавней ветки, может подойдет:


Не работает копирование в буфер в win9x


[0] A Programmer   (26.05.07 16:10)

SelLen:= Length(ws);
if (SelLen > 0) then
begin
  OpenClipboard(Application.Handle);
  try
    EmptyClipboard;
    hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, SelLen*2+2);
     try
       if (hg <> 0) then
       begin
         P:=GlobalLock(hg);
         if P <> nil then
         begin
           Move(PWideChar(ws)^, P^, SelLen * 2 + 2);
           SetClipboardData(CF_UNICODETEXT,hg);
         end;
       end;
     finally
       GlobalUnlock(hg);
       GlobalFree(hg);
     end;
  finally
    CloseClipboard;
  end;
end;

В Win2000 всё работает, в win9x не происходит копирования в буфер, хотя переменная ws содержит юникод-символы.
Как это исправить?

[цитата]  

--------------------------------------------------------------------------------

[1] begin...end ©   (26.05.07 17:30)
CF_UNICODETEXT

Windows NT/2000/XP: Unicode text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data.

(c) MSDN

[цитата]  

--------------------------------------------------------------------------------

[2] A Programmer   (26.05.07 18:02)
>CF_UNICODETEXT

Ясно,но я пробовал и CF_TEXT, всё равно не работает - указатель P указывает на адрес, по которому находится мусор или одни нули (если обнулить hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SelLen*2+2);).

А как же поместить юникод в буфер обмена в win9x, опера ведь это как-то делает?

[цитата]  

--------------------------------------------------------------------------------

[3] A Programmer   (26.05.07 19:15)
Нашёл в чём дело:

GlobalFree(hg);

должен быть после

CloseClipboard;


 
Kolan ©   (2007-06-16 14:56) [2]

> Вот содержимое недавней ветки, может подойдет:

А стандартная выходит не годится? :(


 
Kolan ©   (2007-06-16 14:56) [3]

> стандартная

В смысле Clipboard



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

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

Наверх




Память: 0.47 MB
Время: 0.026 c
2-1181928234
alpha5
2007-06-15 21:23
2007.07.08
Как показать форму аналогично PopupMenu


2-1181651975
Kolan
2007-06-12 16:39
2007.07.08
FormResize срабатывает при закрытии приложения, как избежать?


2-1181826035
Wait
2007-06-14 17:00
2007.07.08
Обмен данными


2-1181665056
hahol
2007-06-12 20:17
2007.07.08
иконки


1-1178639823
Oleg_teacher
2007-05-08 19:57
2007.07.08
Размер мемо