Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.05.2018, 20:31
Taras2020 Taras2020 вне форума
Прохожий
 
Регистрация: 15.01.2018
Сообщения: 36
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Немного дополнить код Delphi XE

Можете помочь добавить рандомную замену + Что бы слова для замены вводились в memo:
К примеру в memo ввожу слово Test заменить на а слово Test2 заменить на и между каждым словом разделитель |.

Пример в Memo:
Test|Замена1|Замена2|Замена3
Test2|Замена1|Замена2|Замена3

Сейчас, в этом коде, нужно вводить слово для замены в Edit2 и одну замену этого слова в Edit3

Вот мой код, где исправить:
Код:
procedure ScanDir(path : string);
var
         sr : TSearchRec;
  FileAttrs : Integer;
          s : tstringlist;
       a, b :  string;
begin
  path := IncludeTrailingPathDelimiter(path);
  if FindFirst(path + '*.*', faAnyFile, sr) = 0 then  begin
    repeat
      if (sr.Name <> '.') and (sr.Name <> '..') then
        if (sr.Attr and faDirectory) = faDirectory then
        begin
          Form1.Memo1.Lines.Add('Отображение лога: ' + path + sr.Name);
          ScanDir(path + sr.Name);
        end
        else
        begin
                s:=tstringlist.create;
                s.LoadFromFile(path + sr.Name);
                s.text:=StringReplace(s.Text,Form1.Edit2.Text,Form1.Edit3.Text,[rfreplaceall]); //
                s.SaveToFile(path + sr.Name);
                FreeAndNil(s);
        end;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
dirName: string;
begin
  if SelectDirectory('Выберите дерикторию','C:\Users\kk\Desktop\Ttt\', dirName) then // тут меняет слово с edit2 на то что в Edit 3
  Edit1.Text:= (dirName);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ScanDir(Edit1.Text+'\'); // тут путь к папке
end;
Ответить с цитированием
  #2  
Старый 28.05.2018, 01:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну типа так:
Код:
function RandomStringReplace(S : String; Rpl : String) : String;
var
  sl : TStringList;
begin
  sl := TStringList.Create;
  sl.Delimiter := '|';
  sl.DelimitedText := Rpl;

  Result := StringReplace(S, sl[0],sl[Random(sl.Count-1)+1],,[rfreplaceall]);

  sl.Free;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Taras2020 (29.05.2018)
  #3  
Старый 29.05.2018, 17:24
Taras2020 Taras2020 вне форума
Прохожий
 
Регистрация: 15.01.2018
Сообщения: 36
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну типа так:
Код:
function RandomStringReplace(S : String; Rpl : String) : String;
var
  sl : TStringList;
begin
  sl := TStringList.Create;
  sl.Delimiter := '|';
  sl.DelimitedText := Rpl;

  Result := StringReplace(S, sl[0],sl[Random(sl.Count-1)+1],,[rfreplaceall]);

  sl.Free;
end;

Только как к этому коду что выше подключить ?
Ответить с цитированием
  #4  
Старый 29.05.2018, 19:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А головой думать не пробовал?
По имени функции видно, что она представляет собой замену стандартной StringReplace, т.е. делает одну замену (т.е. один образец меняет на один из вариантов). Соответсвеено. если у тебя правила замены "лежат" в TMemo, то надо пройтись по его строкам и вызвать эту функцию для каждой строки.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter