Главная страница
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
15-1181199412
stone
2007-06-07 10:56
2007.07.08
Нужен программист MS SQL + Delphi


2-1181726745
Клара
2007-06-13 13:25
2007.07.08
Excel


15-1180987047
Курдль
2007-06-04 23:57
2007.07.08
Поиск работников.


15-1181283015
TCrash
2007-06-08 10:10
2007.07.08
Форум по С++


1-1178705716
logslava
2007-05-09 14:15
2007.07.08
Зависание программы при выходе из метода моего класса