Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Удаление символов в строке до символа =


Автор: sprus80 11.9.2012, 12:06
Есть Memo с строками типа 
18=1544 1 77 89
19=1548 1 78 910
20=1788 1 78 95
 нужно удалить символы до = (и его тоже)

Удалял так

Код

Source := Memo1.lines.text;
Delete(Source,1,Pos('=',Source));


Но она работает с одной огромной строкой. Мне это не подходит, подскажите пожалуйста как работать в цикле с каждой строкой.
Пробовал написать такой обработчик, но он не работает.

Код

procedure TForm1.Button4Click(Sender: TObject);
var
   Source : string;
   i: Integer;
begin
for i:=0 to Memo1.Lines.Count-1 do
begin
 Source := Memo1.lines.Strings[i];
  Delete(Source,1,Pos('=',Source));
 end;
 end;


Сильно не пинайте, с циклом почти не работал.

Автор: DarkProg 11.9.2012, 12:14
Ну а, как бы по второму способу, если присвоить результат строке откуда текст извлекли, работать не будет?

Автор: superVad 11.9.2012, 12:32
Код

так
  Source := Memo1.lines[i];
  Delete(Source,1,Pos('=',Source));
  Memo1.lines[i] := Source;

может так
  Delete(Source,1,Pos('=',Memo1.lines[i]));


Автор: lomaster 11.9.2012, 12:37
Откуда в мемо эти строки взялись?

Автор: kami 11.9.2012, 12:42
Цитата(sprus80 @  11.9.2012,  12:06 Найти цитируемый пост)
Memo1.lines.Strings[i];

И так постепенно доберемся до EOutOfMemory, если текста достаточно много smile
Но если немного - тогда нормально.
 ашипка.

Голосую за первый вариант superVad  smile 

Автор: sprus80 11.9.2012, 12:57
В Memo текст грузиться из txt файла через openDialog, размер не большой

Код

procedure TForm1.Button1Click(Sender: TObject);
var
Source : string;
i: Integer;
begin
Memo1.Lines.Delete(0); //удаляю первую строку
 for i:=0 to Memo1.Lines.Count-1 do / цикл 0n 0 до последней строки
   Delete(Source,1,Pos('=',Memo1.lines[i])); 
theen
   Memo1.lines[i] := Source; /вывод результата
end;


цикл не работоспособен. Пните что не так.

Автор: БелАмор 11.9.2012, 13:02
Цитата(kami @  11.9.2012,  13:42 Найти цитируемый пост)
Голосую за первый вариант superVad  

Тогда ещё вариант на конкурс:

Код

var
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count-1 do
    Memo1.Lines[i] := Memo1.Lines.ValueFromIndex[i];
end;

Автор: lomaster 11.9.2012, 13:25
Цитата

В Memo текст грузиться из txt файла через openDialog, размер не большой

грузите в TStringList, потом в мемо пойдет уже как надо.  Типа так: Memo.Lines.Assign(TStringList.Values);

Автор: sprus80 11.9.2012, 13:55
Сделал так 

Код

procedure TForm1.Button2Click(Sender: TObject);
var
 i: Integer;
 begin
 Memo1.Lines.NameValueSeparator := '=';
 Memo2.Clear;
 for I := 0 to Memo1.Lines.Count - 1 do
 begin
 Memo2.Lines.Add(Memo1.Lines.ValueFromIndex[i]);
 Memo1.Lines[i] := Memo1.Lines.Names[i];
 end;
 end;

конечно через одно место, но работает

Спасибо всем за помощь, подтолкнули.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)