|
Вопрос # 2 674/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста. Я пытаюсь скопировать текст из memo в буфер (нажатием кнопки). Все вроде получается, текст там есть, но при повторном нажатии на кнопку программа вылетает.
 |
Вопрос задал: Андрей Николаевич (статус: Посетитель)
Вопрос отправлен: 23 апреля 2009, 11:30
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 16; последнее сообщение — 24 апреля 2009, 07:57; участников в обсуждении: 5.
|
Вадим К (статус: Академик), 23 апреля 2009, 11:34 [#1]:
Странно, с чего бы ей вылетать. Точно вылетает здесь?
А случайно хуков на буфер обмена никаких не установленно? Ну к примеру Abbyy Lingvo, punto switcher (о, как им можно пользоваться?) или какого то хитрого фаервола-антивируса?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 11:56 [#2]:
нет Abbyy Lingvo, punto switcher. Стоит только каспер
|
|
Вадим К (статус: Академик), 23 апреля 2009, 11:59 [#3]:
попробовать отключить каспера. если бага будет повторяться, будем фантазировать дальше.
(следует помнит, что современные антивирусы "очень умные" и после обычного "отключения" не всегда отключаются полностью)
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 12:07 [#4]:
Попробовал - все по старому.
|
|
Вадим К (статус: Академик), 23 апреля 2009, 12:44 [#5]:
ок, подойдём с другой стороны. На самом деле Memo умеет копировать в буфер обмена самостоятельно. Попробуйте так
Memo1.SelStart := 0;
Memo1.Sellength := length(memo1.text);
Memo1.CopyToClipboard;//этот метод копирует выделенный текст
Повториться ли ошибка?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 13:35 [#6]:
Копирует и вылетает 3-4 раза нажав на кнопку. Я мож чет не понимаю, но кипирую этим методом и без выделения тоже ....
|
|
min@y™ (статус: Доктор наук), 23 апреля 2009, 13:46 [#7]:
Вылетает - это как? Прога просто закрывается или выдаётся ошибка?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 13:50 [#8]:
Просто закрывается. Ошибка не выводится
|
|
Вадим К (статус: Академик), 23 апреля 2009, 14:05 [#9]:
Очень странно. Похоже на то, что либо есть ещё код, о котором Вы умалчиваете, либо прибивает стороння программа.
Итак, пути к наступлению.
проверяем кто виноват, вместо строки
Clipboard.asText:=Memo2.Text
пишем
Clipboard.asText:='some text';
и жмем кнопку.
опыт номер два
заменяем кодом
Try
Clipboard.asText:=Memo2.Text
Except
on E : Exception do
ShowMessage(E.ClassName+' ошибка с сообщением : '+E.Message);
end;
Если выдаст ошибку - копируем сюда.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
POWER (статус: Посетитель), 23 апреля 2009, 14:21 [#10]:
У меня бывала похожая картина. Я просто прикаждой нажатии сперва очищаю буфер и все.
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 15:03 [#11]:
Буфер очищать пробовал, и два варианта попробовал - все по старому.
Вот весь код (Простите за стиль написания)
Procedure TForm1.Button1click(Sender: TObject);
var
temp: string;
begin
if Memo1.text <> '' then
begin
temp:=Memo1.Text;
end;
Memo2.text:=temp;
end;
Procedure TForm1.Button2click(Sender: TObject);
begin
Clipboard.asText:=Memo2.Text
end;
end.
|
|
min@y™ (статус: Доктор наук), 23 апреля 2009, 15:23 [#12]:
Странная реализация копирования текста из одного TMemo в другой.
Procedure TForm1.Button1click(Sender: TObject);
var
temp: string;
begin
if Memo1.text <> ''
then begin
temp:=Memo1.Text;
end;
Memo2.text:=temp; // <--- Чему ревно temp при Memo1.text = ''?
end;
Может написать так:
Procedure TForm1.Button1click(Sender: TObject);
begin
if Memo1.text <> ''
then Memo2.Lines.Assign(Memo1.Lines);
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Dron (статус: Студент), 23 апреля 2009, 15:45 [#13]:
У модуля Clipbrd есть глюки при работе с буфером - в частности, Open иногда может вызывать исключение. Рекомендую делать так:
Memo.SelectAll;
Memo.CopyToClipboard;
С уважением.
|
|
Андрей Николаевич (статус: Посетитель), 23 апреля 2009, 16:11 [#14]:
Да, копирование из мемо в мемо можно сделать и по другому ....
Попробовал:
Memo.SelectAll;
Memo.CopyToClipboard;
Результата нет
|
|
Dron (статус: Студент), 23 апреля 2009, 20:39 [#15]:
Если вам нужно передать текст из одного Memo в другое, использовать буфер - это крайнее извращение. Что касается ошибок - либо копируете очень часто, либо ещё что-то. Оберните хотя бы в try..except.
С уважением.
|
|
Андрей Николаевич (статус: Посетитель), 24 апреля 2009, 07:57 [#16]:
) Да передача из одного мемо в другой это вообще левак ... Вопрос был написан выше - из мемо в буфер=вылет программы.
Прошу прощения у всех, проблема решилась. На другом ПК попробовал и там все отлично работает....
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|