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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.07.2018, 15:33
Deligter5 Deligter5 вне форума
Прохожий
 
Регистрация: 26.07.2018
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Копирование файлов по маске из заданной ранее директории переменной

Здраствуйте . Я начинающий.
Создал код , при выполнении которого , при выборе в диалоговом окне
папки, она тут же копируется в заданную папку.
У меня есть рабочий код, что по заданной маске , копирует файлы txt с первой директории в другую.
Но вот я не могу сделать так, чтоб первая директория была, как раз выбранная папка в Первом коде.
То есть мне во втором коде нужно как то использовать переменную Dir и приплюсовать к ней маску, этого так и не сделал. HELP
Статическая папка во втором коде не подходит, так как папка будет каждый раз иметь другое название.

Код:
function CopyDir(fromDir, toDir: string): boolean;
var
fos: TSHFileOpStruct;
todir2: string;
begin
todir2:=todir;
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
//fFlags := FOF_FILESONLY;
fFlags:= FOF_SIMPLEPROGRESS;
fflags:= fflags or FOF_NOCONFIRMATION;
fflags:= fflags or FOF_SILENT;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir2);
end;
Result := (0 = ShFileOperation(fos));
end;

const
  SELDIRHELP = 1000;
procedure TForm1.btn2Click(Sender: TObject);
var
  Dir: string;
  SearchRec: TSearchRec;
begin
Dir := 'D:\';
  if FileCtrl.SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
CopyDir(PChar (Dir), PChar ('C:\0_TEMP7'));

end;
Админ: Пользуемся тегами при оформлении кода!

Код:
function CopyFiles(Handle: Hwnd; Src: array of string; Dest: string;
                   Move: boolean; AutoRename: boolean): integer;
var
  SHFileOpStruct: TSHFileOpStruct;
  SrcBuf: TBuffer;
begin
  CreateBuffer(Src, SrcBuf);
  with SHFileOpStruct do
    begin
      Wnd:=Handle;
      wFunc:=FO_COPY;
      if Move then wFunc:=FO_MOVE;
      pFrom:=pointer(SrcBuf);
      pTo:=pChar(Dest);
      fFlags:=0;
      if AutoRename then fFlags:=FOF_RENAMEONCOLLISION;
      fAnyOperationsAborted:=false;
      hNameMappings:=nil;
      lpszProgressTitle:=nil
    end;
  result:=SHFileOperation(SHFileOpStruct);
  SrcBuf:=nil
end;
procedure TForm1.btn3Click(Sender:TObject);
begin
CopyFiles(Handle, ['C:\Users\User\Desktop\test\*.txt'],
            'C:\Users\User\Desktop\test2\', true, true);
end;
end.
Админ: Пользуемся тегами при оформлении кода!

Последний раз редактировалось Admin, 26.07.2018 в 20:09.
Ответить с цитированием
  #2  
Старый 26.07.2018, 21:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А что, так вот нельзя?
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
  Dir: string;
  SearchRec: TSearchRec;
begin
  Dir := 'D:\';
  if FileCtrl.SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
    begin
      Dir := IncludeTrailingPathDelimiter(Dir) + '*.txt';
      CopyDir(PChar (Dir), PChar ('C:\0_TEMP7'));
    end;
end;
Или целевая папка тоже как-то должна меняться/выбираться?
Ответить с цитированием
  #3  
Старый 27.07.2018, 09:00
Deligter5 Deligter5 вне форума
Прохожий
 
Регистрация: 26.07.2018
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А что, так вот нельзя?
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
  Dir: string;
  SearchRec: TSearchRec;
begin
  Dir := 'D:\';
  if FileCtrl.SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
    begin
      Dir := IncludeTrailingPathDelimiter(Dir) + '*.txt';
      CopyDir(PChar (Dir), PChar ('C:\0_TEMP7'));
    end;
end;
Или целевая папка тоже как-то должна меняться/выбираться?

Не работает код , подключал FileCtrl
Ответить с цитированием
  #4  
Старый 27.07.2018, 19:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Что именно не работает?
Ты задал вопрос как совместить путь, полученный из диалога и маску файлов. Я тебе это написал. Что у тебя CopyDir не работает - дык это ты не спрашивал.

Учитесь правильно задавать вопросы и ставить задачи. В жизни очень пригодится такой навык.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter