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