![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день. Есть следующий код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var DataIn,DataOut: TStringList; i,s: integer;
Data: string; (*первые три строки из МЕМО1 переделанные в одну строку из 3-х слов*)
begin
DataIn := TStringList.Create; (*начальный массив строк из МЕМО1*)
DataOut := TStringList.Create; (*финишный накопитель строк типа СТЕК*)
DataIn.AddStrings(Memo1.Lines); (*копируем из МЕМО1 все строки*)
s := DataIn.Count; (*начальное значение кол-ва строк в ПЕРЕМ*)
(*вот этот код надо ввести в цикл*)
(*вызов процедур*)
CopyStrings(DataIn, Data); (*скопировали первые три строки из DataIn в Data как одну строку*)
DataOut.Insert(0, Data); (*перекинули строку в накопитель строк*)
DelStrings(DataIn); (*удаление первых 2-х строк из ПЕРЕМ DataIn*)
Memo2.Text := DataOut.Text; (*контрольный просмотр результата*)
DataIn.Free;
DataOut.Free;
end;ввод строк в МЕМО1: мама папа бобо огого еще больше ничего вывод строк в МЕМО2: мама папа бобо бобо огого еще еще больше ничего на текущий момент просто выводятся "мама папа бобо" а дальше остановка По отдельности все процедуры (CopyStrings и DelStrings) работают как надо никак не пойму как все это дело ввести в цикл |
|
#2
|
||||
|
||||
|
Нет разницы. Просто у While в условии будет стоять знак">", а в Repeat "=".
|
|
#3
|
||||
|
||||
|
На самом деле есть, репит выполняется минимум один раз.
|
|
#4
|
||||
|
||||
|
А простое копирование строк из поля в поле не пойдет?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
I, J, K, L: Byte;
TmpStr: String;
begin
I := Memo1.Lines.Count;
J := 0;
L := 2;
while J < I do
begin
TmpStr := '';
for K := J to L do
TmpStr :=TmpStr +' '+ Memo1.Lines[K];
Memo2.Lines.Add(TmpStr);
J := J + 2;
L := L + 2;
end;
end; P.S.: а в Memo1 всегда четное количество строк? Последний раз редактировалось Kailon, 27.06.2012 в 00:25. |
|
#5
|
|||
|
|||
|
нет, простое копирование не пойдет
вот и подсказанное решение Код:
begin
i := 0;
while i < T1.Count do
begin
str := '';
for j := i to min(i + step - 1, T1.Count - 1) do
str := str + T1.Strings[j] + ' ';
T2.Add(trim(str));
i := i + (step-1);
end; |