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