|
Вопрос # 879/ вопрос открыт / |
|
Здравствуйте!
Столкнулся с такой проблемой! Мне нужно разбить список строк или текст в TMEMO на определенное колличество (постоянное, например по 10). Моя реализация оказалась ну очень уж медленной (см. приложение). Вот такая галиматья к тому же неточная!
Можно ли сделать это быстрее, точнее???
Заранее спасибо!
Приложение: Переключить в обычный режим- for i=0 to strtoint(kolvo_strok)-1 do
- memo2.Lines.add(memo1.Lines.Strings[i]);
- memo3.lines.add(Memo2.text);
- dlina:=length(memo3.Text);
- memo3.Clear;
- Source:=memo1.Text;
- Delete(source,1,dlina);
- memo1.Text:=source;
 |
Вопрос задал: Phoenix (статус: Посетитель)
Вопрос отправлен: 30 августа 2007, 23:43
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Aleksey P. Kharitonov
Здравствуйте, Phoenix!
Попробуйте разделить текст следующим образом:
Приложение: Переключить в обычный режим-
-
-
- function DelimStr(const Source: string; Len: Integer; const StrCount: Integer): string;
- var
- lenDelimStr, i, InsPos: Integer;
- begin
- Result:= Source;
- i:=1;
-
- if lenDelimStr = 0 then lenDelimStr:= 1;
- InsPos:= lenDelimStr+1;
- repeat
- Insert(#13#10, Result, InsPos);
- inc(i);
- InsPos:= InsPos+lenDelimStr+2;
- until i < StrCount;
- end;
-
-
- procedure TForm2.Button1Click(Sender: TObject);
- begin
- Memo1.Text := DelimStr(Memo1.Text, Length(Memo1.Text), 10);
- end;
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 2 сентября 2007, 16:10; участников в обсуждении: 3.
|
Aleksey P. Kharitonov (статус: 3-ий класс), 31 августа 2007, 02:18 [#1]:
Прощу прощенья, опечатка . Функция может корректно работать лишь со строкой, так как разбивка производится с помощью символов #13,#10.
|
|
Phoenix (статус: Посетитель), 31 августа 2007, 02:23 [#2]:
мда, спасибо конечно, но это не то что мне нужно
|
|
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);
Поделит по десять строк....
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|