Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.02.2011, 02:37
disker disker вне форума
Прохожий
 
Регистрация: 20.02.2011
Сообщения: 12
Репутация: 10
Вопрос Копирование из memo1 в memo2 на Delphi 7

Помогите разобраться с кодом. В memo1 находится такой текст:
Цитата:
Нью-Орлеан Лейкерс 95 101
Оклахома Нью-Орлеан 104 93
Нью-Орлеан Вашингтон 97 89
Финикс Нью-Орлеан 104 102
Сакраменто Нью-Орлеан 102 96
Миннесота Денвер 100 113
Торонто Миннесота 111 100
Миннесота Мемфис 84 102
Миннесота Торонто 103 87
Юта Миннесота 108 100
Миннесота Нью-Орлеан 113 98
Нью-Орлеан Миннесота 114 86
Миннесота Нью-Орлеан 94 96
Миннесота Нью-Орлеан 96 97
Нью-Орлеан Миннесота 98 89
Нью-Орлеан Миннесота 94 93
Нью-Орлеан Миннесота 101 97
Миннесота Нью-Орлеан 116 108
Миннесота Нью-Орлеан 90 122
Нью-Орлеан Миннесота 110 76
Нужно его скопировать в memo2, но чтобы получилось так:

Цитата:
Нью-Орлеан
Лейкерс
95
101
Оклахома
Нью-Орлеан
104
93
.......
.......

Нью-Орлеан
Миннесота
110
76
То есть чтобы каждое слово было в отдельной строке. Возможно ли такое сделать? Спасибо.
Ответить с цитированием
  #2  
Старый 20.02.2011, 03:09
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Попробуй так:
Код:
Memo2.Text := StringReplace(Memo1.Text, ' ', #13#10, [rfReplaceAll]);
Ответить с цитированием
  #3  
Старый 20.02.2011, 16:14
StudentMarat StudentMarat вне форума
Прохожий
 
Регистрация: 18.02.2011
Сообщения: 38
Репутация: 156
По умолчанию

Вот решил. Здесь при нажатии на кнопку текст из Memo1 копируется построчно в Memo2

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s2:String;
 s:String;
 i,j:integer;
begin
   try
    s:=memo1.Text;
    s2:='';
    i:=1;
    while (i<=length(s)) do
     begin
      if s[i]<>' ' then
       begin
        s2:=s2+s[i];
       end;
      if s[i]=' ' then
       begin
        Delete(s,1,i);
        if (s2<>'') then
         memo2.Lines.Add(s2);
        s2:='';
        i:=0;
       end;
      inc(i);
     end;
     memo2.Lines.Add(s);
   except
    on e:Exception do
   end;
end;
Ответить с цитированием
  #4  
Старый 20.02.2011, 16:53
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Код:
var
  i: integer;
begin
  Memo2.Lines.Text := WrapText(StringReplace(Memo1.Lines.Text, #13#10, ' ', [rfReplaceAll]), #13#10, [' '], 0);
  for i:=0 to Memo2.Lines.Count-1 do
    Memo2.Lines[i] := TrimRight(Memo2.Lines[i]); //убираем пробелы в конце строк, который получились из-за WrapText
end;

Но вариант ryderx34 короче , а мой чисто познавательный.

Последний раз редактировалось Assistant, 20.02.2011 в 16:58.
Ответить с цитированием
  #5  
Старый 21.02.2011, 00:54
disker disker вне форума
Прохожий
 
Регистрация: 20.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

Всем спасибо за ответы. Завтра попробую и отпишусь работает ли. Только мне нужно будет это делать автоматом, а не при нажатии кнопки. Эта операция как бы будет одной из многих. При нажатии кнопки будет отсеиваться текст из файла к такому как в первой цитате, а уж потом копироваться для последующей обработки в мемо2. А после мемо2 уже будут проводится дальнейшая обработка с текстом, как к примеру сколько раз каждое слово встречается в тексте в мемо2.
Ответить с цитированием
  #6  
Старый 21.02.2011, 14:32
disker disker вне форума
Прохожий
 
Регистрация: 20.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

Странно, но ни один из предложенных методов не работает. В первом случае получаем вот такую ошибку, хотя мемо2 прописал в unit2.pas как Memo2: TMemo; :

Цитата:
[DCC Error] Unit2.pas(106): E2003 Undeclared identifier: 'Memo2'

во втором случае получаю такой текст, что немного не подходит - нужно по одному слову в каждую строчку:

Цитата:
Memo2
Шарлотт
Даллас 92
101
Шарлотт
Майами 97
109
Детройт
Шарлотт 87
97
Юта
Шарлотт 83
78
Клипперс
Шарлотт 103
88
Бостон
Орландо 91
80
Бостон
Даллас 97
101
Сакраменто
Бостон 90
95
Лейкерс
Бостон 96
109
Финикс
Бостон 88
71
Бостон
Шарлотт 99
94
Шарлотт
Бостон 62
93
Бостон
Шарлотт 92
71
Бостон
Шарлотт 104
80
Шарлотт
Бостон 90
108
Бостон
Шарлотт 92
59
Бостон
Шарлотт 111
109
Шарлотт
Бостон 114
106
Шарлотт
Бостон 84
89
Шарлотт
Бостон 78
101


в третьем случае тоже получаю ошибку, какую ещё не разобрался до конца...
Ответить с цитированием
  #7  
Старый 21.02.2011, 14:33
disker disker вне форума
Прохожий
 
Регистрация: 20.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

Прошу прощения, немного не те комманды в примере но это сути не меняет - шаблон ввода один и тот же для разного текста..
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025