| 
| 
 | Вопрос # 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]:) Да передача из одного мемо в другой это вообще левак ... Вопрос был написан выше - из мемо в буфер=вылет программы. Прошу прощения у всех, проблема решилась. На другом ПК попробовал и там все отлично работает....
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |