01.08.2018, 18:42
|
Новичок
|
|
Регистрация: 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.
|