Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 09:27   #1
kniazkinP
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 11
По умолчанию Замена строк в файлах

Вот программа по замене строки в html файлах. В ней выбор папки и простейший поиск нужных строк (берущихся из edit) и замена на нужное значение. Есть так же ограничение по выбору (просто в папке файлы - 1800 штук), нужно чтобы можно было ввести в edit не одно значение (j), а несколько (например - j, ba,ca, bg, vp, vp* - где звездочка может быть любое количество букв или симоволов). Вот чтобы он один считывал я осилил))) А вот как седлать чтобы можно было вводить несколько значений напрмер через запятую?

Код:
var
  Form2: TForm2;
  fname:string;
  poisk1,zamena1,poisk2,zamena2,s:string;
  dlstrp1,dlstrz1,dlstrp2,dlstrz2,i,isk:integer;

implementation

procedure TForm2.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
Label6.Caption:='Количесво файлов '+inttostr(FileListBox1.Count-isk);
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  s:string;
begin
poisk1:=edit2.Text;
zamena1:=edit3.Text;
dlstrp1:=Length(poisk1);
dlstrz1:=Length(zamena1);

poisk2:=edit4.Text;
zamena2:=edit5.Text;
dlstrp2:=Length(poisk2);
dlstrz2:=Length(zamena2);
ProgressBar1.Max:=FileListBox1.Count-isk;
for I := 0 to FileListBox1.Count - 1 do
                       begin
                       fname:=FileListBox1.Items[i];
                       s:=FileListBox1.Items[i];
                       if s[1]<>edit6.text[1] then begin
                       ProgressBar1.Position:=i+1;
                       zam(fname);
                                                    end;
                       end;
ShowMessage('Готово !');
end;

procedure TForm2.DirectoryListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
isk:=0;
 for I := 0 to FileListBox1.Count - 1 do
                       begin
                        s:=FileListBox1.Items[i];
                       if s[1]=edit6.text[1] then isk:=isk+1;
                       end;
Label6.Caption:='Количесво файлов '+inttostr(FileListBox1.Count-isk);
ProgressBar1.Max:=FileListBox1.Count-isk;
end;

procedure TForm2.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
FileListBox1.Mask:=Edit1.Text;
FileListBox1.Refresh;
isk:=0;
 for I := 0 to FileListBox1.Count - 1 do
                       begin
                        s:=FileListBox1.Items[i];
                       if s[1]=edit6.text[1] then isk:=isk+1;
                       end;
Label6.Caption:='Количесво файлов '+inttostr(FileListBox1.Count-isk);
ProgressBar1.Max:=FileListBox1.Count-isk;
end;

procedure TForm2.Edit6KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
isk:=0;
 for I := 0 to FileListBox1.Count - 1 do
                       begin
                        s:=FileListBox1.Items[i];
                       if s[1]=edit6.text then isk:=isk+1;
                       end;
end;

procedure TForm2.FormActivate(Sender: TObject);
begin
isk:=0;
 for I := 0 to FileListBox1.Count - 1 do
                       begin
                        s:=FileListBox1.Items[i];
                       if s[1]=edit6.text[1] then isk:=isk+1;
                       end;
Label6.Caption:='Количесво файлов '+inttostr(FileListBox1.Count-isk);
Button1.SetFocus;
end;

procedure tform2.zam(fn:string);
 var
 n1,n2,k:integer;
 stroka:string;
 begin
 memo1.Lines.LoadFromFile(fn);
   for k := 0 to memo1.Lines.Count - 1 do
    begin
      stroka:=memo1.Lines[k];
      n1:=pos(poisk1,stroka);

      if n1<>0 then begin
      delete(stroka,n1,dlstrp1);
      insert(zamena1,stroka,n1);
                   end;

      n2:=pos(poisk2,stroka);

      if n2<>0 then begin
      delete(stroka,n2,dlstrp2);
      insert(zamena2,stroka,n2);
                   end;

memo2.Lines.Insert(k,stroka);
   end;
   memo2.Lines.SaveToFile(fn);
   memo2.Clear;
   memo1.Clear;
end;
kniazkinP вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена в текстовых файлах akm-gala Помощь студентам 1 18.06.2010 09:08
Поиск одинаковых строк в файлах xls valeryana Microsoft Office Excel 10 22.09.2009 11:45
замена строк матрицы Rom@shka Общие вопросы C/C++ 1 16.01.2009 15:47
Как посчитать сумму строк во всех текстовых файлах? qwestor PHP 8 30.12.2007 16:02