Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 879

/ вопрос открыт /

Здравствуйте!
Столкнулся с такой проблемой! Мне нужно разбить список строк или текст в TMEMO на определенное колличество (постоянное, например по 10). Моя реализация оказалась ну очень уж медленной (см. приложение). Вот такая галиматья к тому же неточная!
Можно ли сделать это быстрее, точнее???
Заранее спасибо!

Приложение:
  1. for i=0 to strtoint(kolvo_strok)-1 do
  2. memo2.Lines.add(memo1.Lines.Strings[i]);
  3. memo3.lines.add(Memo2.text);
  4. dlina:=length(memo3.Text);
  5. memo3.Clear;
  6. Source:=memo1.Text;
  7. Delete(source,1,dlina);
  8. memo1.Text:=source;


Phoenix Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Phoenix (статус: Посетитель)
Вопрос отправлен: 30 августа 2007, 23:43
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Aleksey P. Kharitonov

Здравствуйте, Phoenix!
Попробуйте разделить текст следующим образом:

Приложение:
  1.  
  2.  
  3.  
  4. function DelimStr(const Source: string; Len: Integer; const StrCount: Integer): string;
  5. var
  6. lenDelimStr, i, InsPos: Integer;
  7. begin
  8. Result:= Source;
  9. i:=1;
  10.  
  11. if lenDelimStr = 0 then lenDelimStr:= 1;
  12. InsPos:= lenDelimStr+1;
  13. repeat
  14. Insert(#13#10, Result, InsPos);
  15. inc(i);
  16. InsPos:= InsPos+lenDelimStr+2;
  17. until i < StrCount;
  18. end;
  19.  
  20.  
  21. procedure TForm2.Button1Click(Sender: TObject);
  22. begin
  23. Memo1.Text := DelimStr(Memo1.Text, Length(Memo1.Text), 10);
  24. end;


Ответ отправил: Aleksey P. Kharitonov (статус: 3-ий класс)
Время отправки: 31 августа 2007, 02:06


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 2 сентября 2007, 16:10; участников в обсуждении: 3.
Aleksey P. Kharitonov

Aleksey P. Kharitonov (статус: 3-ий класс), 31 августа 2007, 02:18 [#1]:

Прощу прощенья, опечатка :). Функция может корректно работать лишь со строкой, так как разбивка производится с помощью символов #13,#10.
Phoenix

Phoenix (статус: Посетитель), 31 августа 2007, 02:23 [#2]:

мда, спасибо конечно, но это не то что мне нужно
Alex_ROI

Alex_ROI (статус: Посетитель), 2 сентября 2007, 16:10 [#3]:

А такой вариант?
memo1.Lines.Add(/Текст - больше 10 строк :) ! /);
for i:=0 to memo1.Lines.Count-1 do
if ((i+2) mod 10)=0 then memo1.Lines.Insert(i,#13+#10);
Поделит по десять строк....

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.