![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 1. При нажатии на кнопку выскакивало меню выбора папки. 
		
	
		
		
			2. Когда мы выбрали допустим папку DATA , она тут же скопировалась вместе с вложенными файлами в папку TEMP. 3. Также одновременно скопировались файлы по маске txt из папки DATA в папку Program\in 4. Запустить файл LongLatPicker.jar 5. Скопировать файлы по маске txt из папки Program\out в папку TEMP. В итоге в дереве папки TEMP олжна быть папка DATA и уже обработан файл txt Архив приложен к сообщению. Всем спасибо заранее .  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Если установить Java машину на комп, то можно попробовать. Вот тема про это. Запуск JAR файлов Последний раз редактировалось TEKTON, 01.08.2018 в 21:19.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Разбил по шагам, но можно соединить код в одну кнопку 
		
	
		
		
		
		
		
		
			Код: 
	...  {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.Последний раз редактировалось TEKTON, 01.08.2018 в 21:50.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Можно такой диалог выбора папки сделать 
		
	
		
		
		
		
		
		
			Код: 
	{Add in uses  ShlObj}
var
  Form1: TForm1;
  TempPath:array[0..MAX_PATH] of char; //Путь к выбранной папке
implementation
{$R *.dfm}
//Handle - Ссылка на родительское окно
function BrowseDialog(const Handle:Cardinal):string;
var
  lpItemID:PItemIDList;
  BrowseInfo:TBrowseInfo;
  DisplayName:array[0..MAX_PATH] of char;
begin
  Result:='';
  FillChar(BrowseInfo,sizeof(TBrowseInfo),#0);
  with BrowseInfo do
    begin
      hwndOwner:=Handle;
      pszDisplayName:=@DisplayName;
      lpszTitle:='Выбрать папку';
      ulFlags:=BIF_RETURNONLYFSDIRS;
    end;
  lpItemID:=SHBrowseForFolder(BrowseInfo);
  If lpItemId<>nil then
    begin
      SHGetPathFromIDList(lpItemID,TempPath);
      Result:=TempPath;
      GlobalFreePtr(lpItemID);
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 BrowseDialog(Handle);
 ShowMessage(TempPath); // В TempPath будет путь к выбранной папке
end;
end.Последний раз редактировалось TEKTON, 01.08.2018 в 21:44.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Выбор папки: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	uses FileCtrl;
const
  SELDIRHELP = 1000;
procedure TForm1.Button1Click(Sender: TObject);
var
  Dir: string;
begin
  Dir := 'C:\Windows';
  if FileCtrl.SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
    Label1.Caption := Dir;
end;Копирование и создание папки: Код: 
	uses
  IOUtils;
procedure TForm1.btnCopyClick(Sender: TObject);
begin
  try
    { Copy directory from source path to destination path }
    TDirectory.Copy(edSourcePath.Text, edDestinationPath.Text);
  except
    { Catch the possible exceptions }
    MessageDlg('Incorrect source path or destination path', mtError, [mbOK], 0);
  end;
end;
procedure TForm1.btnCreateClick(Sender: TObject);
begin
  try
    { Create directory to specified path }
    TDirectory.CreateDirectory(edSourcePath.Text);
  except
    { Catch the possible exceptions }
    MessageDlg('Incorrect path', mtError, [mbOK], 0);
  end;
end;Интерактивное копирование файлов по маске (почти тоже самое что и у предыдущего оратора)): Код: 
	Procedure CopyFiles(From , Dest:String);
var
F : TShFileOpStruct;
begin
F.Wnd := 0;
F.wFunc := FO_COPY;
F.pFrom := PCHAR(From);
F.pTo := PCHAR(Dest);
F.fFlags := FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(F) <> 0 then ShowMessage('Copy Failed');
end;
CopyFiles('c:\testfolder2\*.txt', 'c:\testfolder');По запуску JAR, скорее всего, нормально отработает это: Код: 
	ShellExecute(
    0, 
    nil, 
    'java.exe', 
    '-Xmx1024M -Xms1024M -jar minecraft_server.jar',
    nil,
    SW_SHOW
); |