Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.223.123] |
|
Сообщ.
#1
,
|
|
|
Как, в данный кусок кода, добавить возможность: обрабатывать не один файл, а все файлы что находятся в папке и подпапках. Сейчас обрабатывает только один файл. Друзья - Помогите решить задачу!
var SynArr: Array of Array of String; VocFile,SrcFile,DstFile: TextFile; TxtLine: String; SynList: TStringList; begin AssignFile(VocFile, OpenDialog2.FileName); Reset(VocFile); SetLength(SynArr, 0); SynList := TStringList.Create; while not Eof(VocFile) do begin ReadLn(VocFile, TxtLine); SynList.Text := StringReplace(WrapText(TxtLine,#13#10,['|'],1),'|','',[rfReplaceAll]); SetLength(SynArr, Length(SynArr)+1); SetLength(SynArr[High(SynArr)],SynList.Count); for i := 0 to SynList.Count - 1 do SynArr[High(SynArr),i] := SynList.Strings[i]; end; SynList.Free; CloseFile(VocFile); AssignFile(SrcFile, OpenDialog3.FileName); Reset(SrcFile); AssignFile(DstFile, OpenDialog4.FileName); Rewrite(DstFile); while not Eof(SrcFile) do begin ReadLn(SrcFile, TxtLine); for i := 0 to High(SynArr) do for j := 0 to High(SynArr[i]) do TxtLine := StringReplace(TxtLine,SynArr[i,j],SynArr[i,Random(High(SynArr[i]))+1],[]); WriteLn(DstFile, TxtLine); end; CloseFile(DstFile); CloseFile(Srcfile); end; |
Сообщ.
#2
,
|
|
|
Погугли рекурсивный обход каталога, если вообще не в факе
|
Сообщ.
#3
,
|
|
|
Цитата ^D^ima @ Погугли рекурсивный обход каталога Смотрел, но с этой задачей на данном этапе знаний точно не справлюсь. Обращал внимание вот на такое: Вот код рекурсивного обхода всех папок в директории (Но как его прикрутить к коду что выше - Вот в чем вопрос ?): Данный код ищет файлы (*.ts) во всех папках 'C:\test' . procedure FindFiles(const DirPath: string; Str: TStrings); var SR: TSearchRec; begin if FindFirst(DirPath + '\*.ts', faAnyFile, SR) = 0 then try repeat if not ((SR.Name = '.') or (SR.Name = '..')) then begin if SR.Attr = faDirectory then FindFiles(DirPath + '\' + SR.Name, Str) else Str.Add(SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Button1Click(Sender: TObject); begin FindFiles('C:\test', Memo1.Lines); end; |
Сообщ.
#4
,
|
|
|
Ты раздели отдельно функцию которая будет на вход получать имя файла, и обрабатывать. Засунь вызов этой функции\процедуры внутри обхода папок.
Добавлено Цитата Kirilis2018 @ OpenDialog2.FileName вместо этого путь который передает обход папок |
Сообщ.
#5
,
|
|
|
Цитата ^D^ima @ Благодарю, но пока что еще не разобрался, попытаюсь сделать. Ты раздели отдельно функцию которая будет на вход получать имя файла, и обрабатывать. Засунь вызов этой функции\процедуры внутри обхода папок. |