|
|
Регистрация | << Правила форума >> | 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 ); |