![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите разобраться с кодом. В memo1 находится такой текст:
Цитата:
Цитата:
|
|
#2
|
||||
|
||||
|
Попробуй так:
Код:
Memo2.Text := StringReplace(Memo1.Text, ' ', #13#10, [rfReplaceAll]); |
|
#3
|
|||
|
|||
|
Вот решил. Здесь при нажатии на кнопку текст из Memo1 копируется построчно в Memo2
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s2:String;
s:String;
i,j:integer;
begin
try
s:=memo1.Text;
s2:='';
i:=1;
while (i<=length(s)) do
begin
if s[i]<>' ' then
begin
s2:=s2+s[i];
end;
if s[i]=' ' then
begin
Delete(s,1,i);
if (s2<>'') then
memo2.Lines.Add(s2);
s2:='';
i:=0;
end;
inc(i);
end;
memo2.Lines.Add(s);
except
on e:Exception do
end;
end; |
|
#4
|
|||
|
|||
|
Код:
var
i: integer;
begin
Memo2.Lines.Text := WrapText(StringReplace(Memo1.Lines.Text, #13#10, ' ', [rfReplaceAll]), #13#10, [' '], 0);
for i:=0 to Memo2.Lines.Count-1 do
Memo2.Lines[i] := TrimRight(Memo2.Lines[i]); //убираем пробелы в конце строк, который получились из-за WrapText
end;Но вариант ryderx34 короче , а мой чисто познавательный.Последний раз редактировалось Assistant, 20.02.2011 в 16:58. |
|
#5
|
|||
|
|||
|
Всем спасибо за ответы. Завтра попробую и отпишусь работает ли. Только мне нужно будет это делать автоматом, а не при нажатии кнопки. Эта операция как бы будет одной из многих. При нажатии кнопки будет отсеиваться текст из файла к такому как в первой цитате, а уж потом копироваться для последующей обработки в мемо2. А после мемо2 уже будут проводится дальнейшая обработка с текстом, как к примеру сколько раз каждое слово встречается в тексте в мемо2.
|
|
#6
|
|||
|
|||
|
Странно, но ни один из предложенных методов не работает. В первом случае получаем вот такую ошибку, хотя мемо2 прописал в unit2.pas как Memo2: TMemo; :
Цитата:
во втором случае получаю такой текст, что немного не подходит - нужно по одному слову в каждую строчку: Цитата:
в третьем случае тоже получаю ошибку, какую ещё не разобрался до конца... ![]() |
|
#7
|
|||
|
|||
|
Прошу прощения, немного не те комманды в примере но это сути не меняет - шаблон ввода один и тот же для разного текста..
|
|
#8
|
||||
|
||||
|
Цитата:
ryderx34 вполне нормальное и самодостаточное. |
|
#9
|
|||
|
|||
|
Ну я уже не настолько ламер, хотя конечно не сильно разбираюсь в делфи )) мемо2 на форму добавил в первую очередь и это я и имел ввиду когда написал что прописал в unit2.pas как Memo2: TMemo; Может сам компилятор клинит. Ладно попробую ещё раз...
|
|
#10
|
|||
|
|||
|
И всё-таки решение не правильное. Вот скриншот , чтобы было более убедительно:
|
|
#11
|
||||
|
||||
|
Вообще-то судя по скрину, у вас разделителями могут быть не только пробелы. Явно видно, что там табуляция а не пробел, а посему тогда так:
Код:
Memo2.Text := StringReplace(Memo1.Text, #32, #13#10, [rfReplaceAll]); Memo2.Text := StringReplace(Memo1.Text, #8, #13#10, [rfReplaceAll]); |
|
#12
|
|||
|
|||
|
Странно, теперь вообще без изменений - просто копирует как в мемо1... Не могу загрузить скрин, почему-то не открывается окно загрузки файлов на форуме..
|
|
#13
|
|||
|
|||
|
Вот, вроде заработал форум...
|
|
#14
|
|||
|
|||
|
Цитата:
Еще рекомендовал бы заменить в файле 1.txt все табуляторы одиночным пробелом и пробелы которых больше одного тоже на одиночный пробел, тогда код Memo2.Text := StringReplace(Memo1.Text, ' ', #13#10, [rfReplaceAll]) работает, я у себя проверил. Последний раз редактировалось Михалыч, 22.02.2011 в 00:14. |
|
#15
|
||||
|
||||
|
Я тоже кое-что накосячил. С учетом повторов и других символов так получится:
Код:
Memo2.Text := Memo1.Text; while Pos(#32#32,Memo2.Text) > 0 do Memo2.Text := StringReplace(Memo2.Text, #32#32, #32, [rfReplaceAll]); while Pos(#9#9,Memo2.Text) > 0 do Memo2.Text := StringReplace(Memo2.Text, #9#9, #9, [rfReplaceAll]); Memo2.Text := StringReplace(Memo2.Text, #32, #13#10, [rfReplaceAll]); Memo2.Text := StringReplace(Memo2.Text, #9, #13#10, [rfReplaceAll]); Последний раз редактировалось Страдалецъ, 22.02.2011 в 02:38. |