Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Структура кода при обработке текстов


Pcrepair ©   (2012-06-17 11:28:00) 

Добрый день. Есть, к примеру, такая процедура:
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');


brother   (2012-06-17 11:47:00) [1]

> или всетаки правильно так и делать:

для твоей задачи (да и вообще) не правильно...


Медвежонок Пятачок   (2012-06-17 11:46:00) [2]

Вопрос: можно ли все СЛОВО1 как то прописать в виде массива?

можно


brother   (2012-06-17 11:45:00) [3]

а если
> T: TStringList; First: String; Second: String

заменить на TStringList и в процедуре проверять не одно слово а список слов на соответствие Second: String?


Pcrepair   (2012-06-17 11:42:00) [4]

у каждого свои развлечения


Медвежонок Пятачок   (2012-06-17 11:34:00) [5]

а почему не регулярками?


Наверх

Титульная страница Поиск, карта сайта Написать письмо