Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.02.2017, 22:08
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Передача параметра из Delphi в CMD с помощью WinExec

Есть обработчик события:
Код:
procedure TForm1.Button6Click(Sender: TObject);
begin
WinExec('cmd.exe /c "echo PNR && ping -t google.ru" ', SW_SHOW)
end;
В коде Delphi у меня есть объект Memo в который записывается некая информация. Я хочу использовать эту информацию как параметр для передачи команде в CMD. Помогите пожалуйста с этой проблемой.
P.S. К примеру, я получаю в поле Memo путь к какому-то каталогу, далее этот путь записываю в некую переменную и эту переменную вывожу через командную строку с помощью ECHO.
Буду ОЧЕНЬ признателен за помощь. Варианты с ShellExecute и CreateProcess не предлагать, так как такая сложность не требуется.
Ответить с цитированием
  #2  
Старый 15.02.2017, 02:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Либо я чего-то не понимаю, либо как-то так:
Код:
procedure TForm1.Button6Click(Sender: TObject);
begin
WinExec(Format('cmd.exe /c "echo %s" ',[memo1.lines.text]), SW_SHOW);
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
ffpereverzev (15.02.2017)
  #3  
Старый 15.02.2017, 07:19
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Либо я чего-то не понимаю, либо как-то так:
Код:
procedure TForm1.Button6Click(Sender: TObject);
begin
WinExec(Format('cmd.exe /c "echo %s" ',[memo1.lines.text]), SW_SHOW);
end;

Спасибо большое за ответ!
Не сработало. При компиляции вот такие ошибки:
Код:
[Error] Unit1.pas(89): Incompatible types: 'String' and 'PAnsiChar'
[Fatal Error] MegaPROG.dpr(5): Could not compile used unit 'Unit1.pas'
Ответить с цитированием
  #4  
Старый 15.02.2017, 11:44
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от ffpereverzev
...При компиляции вот такие ошибки...
Код:
WinExec(PAnsiChar(Format('cmd.exe...
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
ffpereverzev (15.02.2017)
  #5  
Старый 15.02.2017, 13:15
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Всем огромное спасибо!

Спасибо большое за Ваши отклики!
После многочасовых ковыряний с WinExec все таки пришлось обратиться к ShellExecute и, в итоге, вот, что получилось.
Код:
procedure TForm1.Button6Click(Sender: TObject);
Var
  Log_f    :string; //Переменная для хранения пути к лог-файлу
  Log_b    :string; //Переменная для хранения лог-файла бэкапа 
  Bck_f    :string; //Переменная для хранения пути к каталогу бэкапов
  Prj_d    :string; //Переменная для хранения пути к каталогу проекта
  Pnr_f    :string; //Переменная для хранения пути к файлу ПНР
  par:string; // Переменная, для передачи параметров в командную строку

begin
Log_f := Log_file.Text;  //Считываем текст из окна Log_file
Log_b := Log_backup.Text; //Считываем текст из окна Log_backup
Bck_f := Backup_file.Text; //Считываем текст из окна Backup_file
Prj_d := Project.Text; //Считываем текст из окна Project
Pnr_f := PNR_file.Text; //Считываем текст из окна PNR_file
par:='/K c:\"Program Files"\WinRAR\Rar.exe a -agDDMMYYYY_HHMM -ep1 -m3 -ow -rr100 -inul -t -ilog'+'"'+Log_f +'" -z"'+Pnr_f +'" "'+Bck_f +'" "'+Prj_d +'"'; // Описываем параметры
ShellExecute(Handle, nil, 'cmd.exe', PChar(par), nil, SW_SHOW); //Выполняем необходимую операцию (архивирование)

end;

Только обнаружился интересная ошибка. Почему-то при архивировании, каталог для файла бэкапа получился "плавающий", то есть архив сохраняется в разные папки рандомным образом. Пока разбираюсь из-за чего это может быть.
Ответить с цитированием
  #6  
Старый 15.02.2017, 14:50
Аватар для ffpereverzev
ffpereverzev ffpereverzev вне форума
Новичок
 
Регистрация: 14.02.2017
Сообщения: 50
Версия Delphi: Delphi 7
Репутация: 10
Хорошо Всем огромное спасибо!

Проблема решена. Моя ошибка была в том, что при переносе кода для архивирования из бат-файла я не учел некоторые особенности. В итоге, получился отличный рабочий код:

Код:
procedure TForm1.Button6Click(Sender: TObject);
Var
  Log_f    :string; //Переменная для хранения пути к лог-файлу
  Bck_f    :string; //Переменная для хранения пути к каталогу бэкапов
  Prj_d    :string; //Переменная для хранения пути к каталогу проекта
  Pnr_f    :string; //Переменная для хранения пути к файлу ПНР
  par:string; // Переменная, для передачи параметров в командную строку

begin
Log_f := Log_file.Text;  //Считываем текст из окна Log_file
Bck_f := Backup_file.Text; //Считываем текст из окна Backup_file
Prj_d := Project.Text; //Считываем текст из окна Project
Pnr_f := PNR_file.Text; //Считываем текст из окна PNR_file
par:='/C "C:\Program Files\WinRAR\Rar.exe" a -agProject_DDMMYYYY_HHMM -ep1 -idc -ilog'+Log_f +' -t '+Bck_f +' '+Prj_d +' -z'+Pnr_f; // Описываем параметры
ShellExecute(Handle, nil, 'cmd.exe', PChar(par), nil, SW_SHOW); //Выполняем необходимую операцию (архивирование)

end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter