Текущий архив: 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