|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Немного дополнить код 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
|
|||
|
|||
Ну типа так:
Код:
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
|
|||
|
|||
Цитата:
Только как к этому коду что выше подключить ? |
#4
|
|||
|
|||
А головой думать не пробовал?
По имени функции видно, что она представляет собой замену стандартной StringReplace, т.е. делает одну замену (т.е. один образец меняет на один из вариантов). Соответсвеено. если у тебя правила замены "лежат" в TMemo, то надо пройтись по его строкам и вызвать эту функцию для каждой строки. |