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

Вниз

Помогите с буфером!   Найти похожие ветки 

 
Shrek ©   (2002-09-17 17:21) [0]

Добавляю текст в буфер:
var text: string;

clip := TClipboard.Create;
Text := "TextProb";
clip.AsText := Text;
clip.Free;

А в буфере в место текста, вся строка забыта буквой "Б". Если вставить только то получаются сплошные ёжики.


 
Алексей Ким ©   (2002-09-17 17:24) [1]

выбрось uses ClipBRD;

procedure PutClip ( s: string );
var hg: THandle;
P: PChar;
begin
hg := GlobalAlloc ( GMEM_DDESHARE or GMEM_MOVEABLE, Length( S ) + 1 );
P := GlobalLock ( hg );
StrLCopy(P, PChar(s+#0), length(s)+1);
GlobalUnlock ( hg );
OpenClipboard ( HWND( NIL ) );
SetClipboardData ( CF_TEXT, hg );
CloseClipboard;
GlobalFree ( hg );
end;


 
Song ©   (2002-09-17 17:25) [2]

А куда Вы чего вставляете? Вы создаёте экземпляр своего объекта типа TClipBoard, потом что-то делаете, потом его освобождаете. И чего Вы хотите, я не понял?


 
REA   (2002-09-17 17:28) [3]

Угу. Clipboard глобальная переменная


 
kull ©   (2002-09-17 17:56) [4]


> А куда Вы чего вставляете? Вы создаёте экземпляр своего
> объекта типа TClipBoard, потом что-то делаете, потом его
> освобождаете. И чего Вы хотите, я не понял?

А "освобождение" здесь не причем. Ведь после закрытия приложения содержимое буфера остается.


 
Shrek ©   (2002-09-17 18:03) [5]


> Song
Извини. Это ёще всё тоже, я тогда не обратил внимания, вставил текст в едит смотрю нормольно. Сегодня хотел закончить вставляю в буфер, получаются каракули. Хотя в едите нормально смотрится, копировал с едита в буфер тажа картина.
SendMessage(handler, WM_GETTEXT, SizeOf(Text), Integer(@Text));

P.S. Пажалуйста не называйте меня на Вы, мне всего 23.



 
kull ©   (2002-09-17 18:04) [6]

Функция (а не переменная) ClipBoard здесь не причем, можно вполне создать и свой экземпляр класса.

Вот этот код работает на ура:
procedure TForm1.Button1Click(Sender: TObject);
var
text: string;
clip: TClipboard;
begin

clip := TClipboard.Create;
Text := "TextProb";
clip.AsText := Text;
clip.Free;

end;


Может полностью посмотришь на свой код.


 
Shrek ©   (2002-09-17 18:12) [7]

Короче забудьте про clip: TClipboard;

Добавляю текст в бефер Clipboard.AsText := Edit.Text; значит в юникеде его не прочитаешь и он так и вставляется.


 
kull ©   (2002-09-17 18:17) [8]

А... Так может его нужно вставлять в другом формате а не AsText?
А у тебя Edit.Text - это WideString?


 
Shrek ©   (2002-09-17 18:22) [9]

Да.


 
kull ©   (2002-09-17 18:29) [10]

Так AsText - это просто string. Поэтому не каждый widestring он переведет нормально. Наверное надо класть в буфер в другом формате, вот только в каком, извини не знаю...


 
Song ©   (2002-09-17 18:58) [11]

Чтобы скорировать в буфер обмена достаточно одной строки
ClipBoard.AsText:="MyText";

Для использования буфера надо добавить в Uses модуль ClipBrd. При этом объект ClipBoard будет сам проинициализирован с секции Initialization и освобождён в секции Finalization.
Что непонятно ещё?
Если интересует АПИ, тогда мы все вообще разговариваем не в тему.


 
rhf ©   (2002-09-17 19:01) [12]

Shrek, хм.....видимо работаете под NT?


 
Shrek ©   (2002-09-17 19:27) [13]


> Song
Я туповат, но не настолько. Я это пробывал это ClipBoard.AsText:="MyText"; и многое другое, а с ClipBrd я роботаю уже давно ещё до того как нашол этот форум, и знаю куда его писать.
Если интересует АПИ, тогда мы все вообще разговариваем не в тему.
А этого я вообще не понимаю, к чему это.


> rhf
Это единственное верное замечание.

Эсть какие-то соображения?


 
Song ©   (2002-09-17 19:41) [14]

2Shrek © (17.09.02 19:27)
Дык и что, у Вас не получается скопировать в буфер обмена этой командой, так?
Просто в Вашем примере Вы начали создавать какие-то объкты и пр. Зачем? Не надо, Вам надо работать с глобальным ClipBoard. А вот если это не срабатывает, надо так и говорить.


 
Алексей Ким ©   (2002-09-17 20:03) [15]

2Shrek>можете пояснить вопрос... я не врубаюсь что не работает :(


 
Shrek ©   (2002-09-17 20:19) [16]

Делаю так:
var Text: array[1..255] of char;
SendMessage(handler, WM_GETTEXT, SizeOf(Text), Integer(@Text));
ClipBoard.AsText:=Text;

а в буфере вместо нормального текста, не нормальный, нечитаемый текст, и даже если его вставить получается тоже самое.
Надеюсю теперь ясно???


 
Алексей Ким ©   (2002-09-17 20:28) [17]

хм... нет :D
попробуй char заменить widechar



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
1-98132
madtomas
2002-09-20 12:04
2002.09.30
Генерация уникальной последовательности латинских букв и цифр


7-98368
Леденцов Дима
2002-07-19 20:16
2002.09.30
Как мне подключать эти формы из DLL


1-98136
Morfey COOL
2002-09-17 12:19
2002.09.30
Запуск приложения


14-98273
AL2002
2002-09-03 11:48
2002.09.30
Может, в рифмы поиграем?


4-98414
anod
2002-08-13 12:28
2002.09.30
КАк установить высоту окна