| 
| 
 | Вопрос # 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);
 Поделит по десять строк....
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |