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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2014, 10:14   #1
flyingbudda
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию Переименование и перенос файлов в папку

Есть программа поиска файлов по маске, хотелось бы чтобы она помимо поиска выполняла переименование этих файлов и их перенос в какую нибудь папку. Как проще реализовать?
flyingbudda вне форума Ответить с цитированием
Старый 23.04.2014, 10:19   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Delphi. Работаем с файлами
Streletz вне форума Ответить с цитированием
Старый 23.04.2014, 10:47   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

TSearchRec, FindFirst, FindNext, FindClose, RenameFile, MoveFile, CopyFile Описаны и с примерами в"Оснговах Delphi"(Сылка вверху);
Человек_Борща вне форума Ответить с цитированием
Старый 25.04.2014, 09:47   #4
flyingbudda
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
Восклицание

Почитал.
Вот я реализовал поиск по каталогам маски файла. Как мне теперь из этого сделать так, чтобы найденные файлы он перенес в каталог программы и переименовал в определенные имена. Подскажите программно пожалуйста

Код:
unit FindFile_;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,
  FileCtrl;

type
  TForm1 = class(TForm)
    Edit1: TEdit;       // что искать
    Edit2: TEdit;       // где искать
    Memo1: TMemo;       // результат поиска
    Button1: TButton;   // кнопка Поиск
    Button2: TButton;   // кнопка Папка
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
   FileName: string;  // имя или маска искомого файла
   cDir: string;
   n: integer;       // кол-во файлов, удовлетворяющих запросу

// поиск файла в текущем каталоге
procedure Find(aPath:String);
var
   SearchRec: TSearchRec; // информация о файле или каталоге

begin
   if aPath[length(aPath)] <> '\' then aPath := aPath+'\';
   if FindFirst(aPath+FileName, faArchive,SearchRec) = 0 then
       repeat
          if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then
             begin
               Form1.Memo1.Lines.Add(aPath +  SearchRec.Name);
               n := n + 1;
             end;
        until FindNext(SearchRec) <> 0;

       // обработка подкаталогов текущего каталога
       if FindFirst(aPath+'*', faDirectory, SearchRec) = 0 then
          repeat
              if (SearchRec.Attr and faDirectory) = SearchRec.Attr then
                  begin
                    // каталоги .. и . тоже каталоги,
                    // но в них входить не надо !!!
                    if SearchRec.Name[1] <> '.' then
                       begin
                         Find(aPath+SearchRec.Name);//выполнить поиск в подкаталоге
                       end;
                  end;
          until FindNext(SearchRec) <> 0;
end;

// возвращает каталог, выбранный пользователем
function GetPath(mes: string):string;
var
  Root: string;      // корневой каталог
  pwRoot : PWideChar;

  Dir: string;
begin
  Root := ''; // корневой каталог - папка Рабочий стол
  GetMem(pwRoot, (Length(Root)+1) * 2);
  pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);
  if SelectDirectory(mes, pwRoot, Dir)
     then
          if length(Dir) = 2  // пользователь выбрал корневой каталог
              then GetPath := Dir+'\'
              else GetPath := Dir
     else
          GetPath := '';
end;

// щелчок на кнопке Поиск
procedure TForm1.Button1Click(Sender: TObject);
begin
        Memo1.Clear;             // очистить поле Memo1
        Label4.Caption := '';
        FileName := Edit1.Text;  // что искать
        cDir := Edit2.Text;      // где искать
        n:=0;                    // кол-во найденных файлов
        Find(Edit2.Text);
        
        if n = 0 then
           ShowMessage('Файлов, удовлетворяющих критерию поиска нет.')
        else Label4.Caption := 'Найдено файлов:' + IntToStr(n);
end;

// щелчок на кнопке Папка
procedure TForm1.Button2Click(Sender: TObject);
var
  Path: string;
begin
  Path := GetPath('Выберите папку');
  if Path <> ''
     then Edit2.Text := Path;
end;

end.
flyingbudda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пакетное переименование файлов Денис9 Общие вопросы Delphi 7 21.01.2013 00:02
Переименование файлов Alergen2 Microsoft Office Access 1 01.11.2011 13:57
Переименование файлов в папке. mr_Smitt Общие вопросы Delphi 1 28.09.2009 17:20
Переименование группы файлов Meh Общие вопросы Delphi 2 28.07.2009 12:31