На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Обрабатывать каждый файл в папке Delphi XE
    Как, в данный кусок кода, добавить возможность: обрабатывать не один файл, а все файлы что находятся в папке и подпапках. Сейчас обрабатывает только один файл. Друзья - Помогите решить задачу!
    ExpandedWrap disabled
      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;
      Погугли рекурсивный обход каталога, если вообще не в факе
        Цитата ^D^ima @
        Погугли рекурсивный обход каталога

        Смотрел, но с этой задачей на данном этапе знаний точно не справлюсь. Обращал внимание вот на такое:
        Вот код рекурсивного обхода всех папок в директории (Но как его прикрутить к коду что выше - Вот в чем вопрос ?):

        Данный код ищет файлы (*.ts) во всех папках 'C:\test' .
        ExpandedWrap disabled
          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;
          Ты раздели отдельно функцию которая будет на вход получать имя файла, и обрабатывать. Засунь вызов этой функции\процедуры внутри обхода папок.

          Добавлено
          Цитата Kirilis2018 @
          OpenDialog2.FileName

          вместо этого путь который передает обход папок
            Цитата ^D^ima @
            Ты раздели отдельно функцию которая будет на вход получать имя файла, и обрабатывать. Засунь вызов этой функции\процедуры внутри обхода папок.
            Благодарю, но пока что еще не разобрался, попытаюсь сделать.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0293 ]   [ 16 queries used ]   [ Generated: 28.03.24, 12:24 GMT ]