![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день. Есть, к примеру, такая процедура:
Код:
procedure TForm1.Exchange(T: TStringList; First: String; Second: String);
var
s: String;
index, len: integer;
begin
s := T.Text;
len := Length(First);
index := AnsiPos(First, s);
while (index <> 0) do
begin
Delete(s, index, len);
Insert(Second, s, index);
index := AnsiPos(First, s);
end;
T.Text := s;
end;Процедура находит в тексте СЛОВО1 и меняет его на СЛОВО2 Для обработки текста используется: Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
begin
T := TStringList.Create;
T.LoadFromFile(OpenDialog1.FileName);
Exchange(T, 'СЛОВО1', 'СЛОВО2');
Memo1.Lines := T;
end;
end;Причем Exchange(T, 'СЛОВО1', 'СЛОВО2'); приходится последовательно вызывать и соотвественно писать в вызове процедуры необходимое количество раз. Допустим СЛОВО2 везде одно и тоже Вопрос: можно ли все СЛОВО1 как то прописать в виде массива? или еще чего, так чтобы procedure TForm1.Exchange сама брала очередное СЛОВО1 и меняла на СЛОВО2 в тексте. или всетаки правильно так и делать: Код:
Exchange(T, 'ророр', 'СЛОВО2'); Exchange(T, 'рпак', 'СЛОВО2'); Exchange(T, 'вяваса', 'СЛОВО2'); ...... Exchange(T, 'опрнаев', 'СЛОВО2'); |
|
#2
|
|||
|
|||
|
можно так:
Код:
procedure ExchangeAll(L: TStringList; a: array of string; b: string);
var i: integer;
begin
for i := 0 to high(a) do
Exchange(L, a[i], b);
end;
...
ExchangeAll(StringList, ['a', 'b', 'c'], '*'); |
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
Pcrepair (17.06.2012)
| ||
|
#3
|
|||
|
|||
|
Pyro, спасибо
буду пробовать |
|
#4
|
|||
|
|||
|
Цитата:
А что, стандартной функцией StringReplace воспользоваться нельзя? |
|
#5
|
|||
|
|||
|
низзя, слишком простая
|
|
#6
|
||||
|
||||
|
Ну тогда регэкспы в зубы.
|
|
#7
|
||||
|
||||
|
Цитата:
|