Показать сообщение отдельно
  #3  
Старый 01.08.2018, 18:42
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Разбил по шагам, но можно соединить код в одну кнопку

Код:
...  {Add in uses  ShellApi, FileCtrl, SysUtils}
....
var
  Form1: TForm1;
  chosenDirectory : string;// Глобальная переменная с путём к выбранной папке

implementation

{$R *.dfm}
{------------------------ CopyDir ----------------------------}
 function CopyDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc  := FO_COPY;
    fFlags := FOF_FILESONLY;
    pFrom  := PChar(fromDir + #0);
    pTo    := PChar(toDir)
  end;
  Result := (0 = ShFileOperation(fos));
end;

{---------- 1. Выбор каталога и создание папок для работы--------------------}
procedure TForm1.Button1Click(Sender: TObject);
var
options : TSelectDirOpts;
Path:string;
begin
   chosenDirectory :=ExtractFileDir(ParamStr(0));  // Установка начального каталога
  // Просим пользователя выбрать используя полностью различные диалоги!
  if SelectDirectory(chosenDirectory, options, 0)then
  {ShowMessage('Выбранный каталог = = '+chosenDirectory)}
  else ShowMessage('Выбор прерван');
{З.Ы.  Выбор каталога не очень красивый.
Помню когда то на API попадался очень удобный и красивый,
но не найду сейчас его}


{Создаём папки для работы рядом с нашим exe}
CreateDir('TEMP');// Создаём папку TEMP
Path := ExtractFilePath(ParamStr(0)) + 'Program';// переменная с путём к папке Program
ForceDirectories(Path+'/in');// Создаём папку Program со вложенной папкой   in
ForceDirectories(Path+'/out'); // Создаём папку Program со вложенной папкой out
end;

{------------------------ 2. Копирование выбраной папки в TEMP ----------------------------}
procedure TForm1.Button2Click(Sender: TObject);
var
a,b:string;
begin
a:=chosenDirectory; // путь с выбранной папкой
b:=ExtractFileDir(ParamStr(0))+'/TEMP'; // Куда будем копировать
CopyDir(a,b); // Копируем из... в...
end;

{------------------------ 3. Копируем txt файлы из DATA в Program\in ----------------------------}
procedure TForm1.Button3Click(Sender: TObject);
begin
CopyFile(PWideChar(chosenDirectory+'\DATA\*.txt'), PWideChar(ExtractFileDir(ParamStr(0))+'Program\in\*.txt'), false);
end;

{4. Как запустить *.jar ХЗ
Если б был *.Exe, *.Com, *.txt...
ТО как то так

 WinExec(Pchar('calc.exe'), SW_SHOWNORMAL);

// SW_HIDE — окно скрыто,
// SW_ShowMaximized — окно максимально развернуто,
//  SW_ShowMinimized — окно свернуто,
//  SW_ShowNormal — вид окна обычный.

Или 

ShellExecute(0,'Open',PChar(путь к файлу),'',nil,1);
}


{------------------------ 5. Копируем txt файлы из Program\out в TEMP ----------------------------}
procedure TForm1.Button5Click(Sender: TObject);
begin
DeleteFile(ExtractFileDir(ParamStr(0))+'/TEMP/*.txt');//Чистим на всякий случай папку TEMP от файлов, что б избежать диалогов о замене
CopyFile(PWideChar(ExtractFileDir(ParamStr(0))+'Program\out\*.txt'),PWideChar(ExtractFileDir(ParamStr(0))+ExtractFileDir(ParamStr(0))+'/TEMP/*.txt'), false);
end;
end.
Ответить с цитированием