Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 12:03   #1
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию Копирование и удаление текста в Memo - Delphi

Есть Memo1 мне нужно, по условию если в первом мемо текст превышает 35 строк то начать копирование текста с конца строк Memo1 до ближайшего встретившегося #13 перед или на 35 строке, вставить этот скопированный текст в Memo2 и удалить этот же текст с Memo1
Как это сделать в одном цикле?
S_007 вне форума Ответить с цитированием
Старый 25.06.2015, 12:37   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
начать копирование текста с конца строк Memo1 до ближайшего встретившегося #13
учитывая что #13 это конец строки(или начало новой)
то бишь ПОСЛЕДНЮЮ и ТОЛЬКО строку?
или же
ВСЕ строки ПОСЛЕ 35-ой в ОБРАТНОМ порядке ?
Код:
while Memo1.Lines.count>35 do begin //если в первом мемо текст превышает 35 строк
  k:=memo1.lines.count-1; //индекс последней
  s:=memo1.lines.Strings[k]; // сама последняя
  memo1.lines.delete(k); //удаляем
  memo2.lines.Add(s); // добавляем
end;
Код:
for k:=memo1.lines.count-1 downto 35 do begin //начиная с последней вплоть до 35 
   s:=memo1.lines.Strings[k]; // текущая строка 
  memo1.lines.delete(k); //удаляем
  memo2.lines.Add(s); // добавляем
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 25.06.2015 в 12:45.
evg_m вне форума Ответить с цитированием
Старый 25.06.2015, 13:49   #3
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

evg_m, Спасибо Огромное! Попробовал Ваш пример, работает!
Вы извените меня я неправильно задал вопрос
Если мемо больше 35 строк то начать подниматься вверх от 35 строки до ближайшей пустой строки (я незнаю как определить пустую строку) и от следующей после пустой начать копировать и удалять до конца строк?

Последний раз редактировалось S_007; 25.06.2015 в 13:51.
S_007 вне форума Ответить с цитированием
Старый 25.06.2015, 14:02   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
я незнаю как определить пустую строку
Код:
memo1.lines.Strings[i]=''
можно еще затримить левую часть, чтобы пробелы и табы за пустую считались
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.06.2015, 15:53   #5
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Аватар, Благодарю!
Не могу понять - почему не удаляется остаток от строки которые мемо перенесла сама на новую строку из за того что они не влезли по ширине, Что это значит? как их удалять? Может вначале нужно пробежаться по всем строкам и в каждую воткнуть символ начала строки или что то еще чтоб все перенесенные огрызки от строк имели индекс?
S_007 вне форума Ответить с цитированием
Старый 25.06.2015, 16:50   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Если мемо больше 35 строк то начать подниматься вверх от 35 строки до ближайшей пустой строки (я незнаю как определить пустую строку) и от следующей после пустой начать копировать и удалять до конца строк?
Исходный (Memo1)
Код:
....
30 пришел
31
32 нашел
33 увидел
34 написал
35 прочитал
36 ответил
37 
38 решил
39
40 узнал
числа здесь это просто номера строк

Что мы должны получить в Memo2 ?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.06.2015, 17:36   #7
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

evg_m, Спасибо Большое!!! Вы очень помогли, почти разобрался, только еще не понял как находить в мемо #13 или #10
S_007 вне форума Ответить с цитированием
Старый 25.06.2015, 17:45   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
только еще не понял как находить в мемо #13 или #10
не надо в Memo находить #13 и/или #10 - этот компонент уже сам нашёл все переходы на новую строку и поместил каждую строку в отдельный элемент массива, доступный через memo1.Lines.Strings[] - индекс указывает номер строки.
(кстати, всего строчек в memo = memo1.Lines.Count )
Зачем Вам ещё что-то искать?!!

Может быть, Вы сформулируете (подробно, конкретно, с примерами) КАКУЮ задачу Вы решаете и мы вместе подумаем, как её лучше решить?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Кракозябры при копирование текста в другую программу JonMagon Помощь студентам 2 11.12.2018 19:59
РАЗБИЕНИЕ ТЕКСТА НА ДВА ПОЛЯ Memo, Delphi kapiton Помощь студентам 15 06.10.2014 15:20
Delphi передача текста из memo в memo hauk70 Помощь студентам 27 22.05.2012 18:33
Копирование текста из Memo bulkin2000 Компоненты Delphi 3 30.04.2012 14:03