Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 14.10.2019, 12:44   #1
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию Запуск CMD

Добрый деньЕсть строка запуска
Код:
"C:\Program Files (x86)\pgAdmin III\1.16\\pg_dump.exe" --host "192.168.15.50"  --port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "D:\old.backup" "gilev"
pause
Которую я генерируют
Код:
Var
Checket:integer;
begin
ini_file := TIniFile.Create('config.ini');
StatusBar1.Panels[1].Text:=((ExtractFilePath(Application.ExeName) + 'config.ini'));
try
host.Text:= ini_file.ReadString('conf', 'host','127.0.0.1');
port.Text:= ini_file.ReadString('conf', 'port','5432');
username.Text:= ini_file.ReadString('conf', 'username','5432');
role.Text:= ini_file.ReadString('conf', '=role','postgres');
BD.Text:= ini_file.ReadString('conf', 'BD','Base');
SaveToFile.Text:= ini_file.ReadString('conf', 'file','C:\')+BD.Text+'_'+FormatDateTime('dd.mm.yyyy', Now)+'.backup';
Checket:=StrToInt(ini_file.ReadString('conf', 'Select','0'));
finally
ini_file.Free
end;
If Checket = 0  then
begin
CheckBox1.Checked:=false;
Button1.Enabled:=true;
end
else
begin
CheckBox1.Checked:=true;
Button1.Enabled:=false;
end
Как запустить данную с троку в CMD , что б результат выполнения отображался в memo???
Спасибо
Изображения
Тип файла: jpg 1.JPG (46.8 Кб, 54 просмотров)
gribo4ek вне форума Ответить с цитированием
Старый 14.10.2019, 13:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

а это точно нужно?
может быть, достаточно ShellExecute ?

ну,если вывод нужно получить и именно в мемо, попробуйте поискать функцию GetDosOutput.
например, тыц
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.10.2019, 14:04   #3
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а это точно нужно?
может быть, достаточно ShellExecute ?

ну,если вывод нужно получить и именно в мемо, попробуйте поискать функцию GetDosOutput.
например, тыц
Ошибку вываливает
пишу так
Код:
 Memo1.Lines.Text := GetDosOutput( 'cmd.exe ' + start, '', Rc );
Изображения
Тип файла: jpg 1.JPG (76.1 Кб, 47 просмотров)
gribo4ek вне форума Ответить с цитированием
Старый 14.10.2019, 14:06   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Вы думаете "/C" это смайлик там стоял такой?
p51x вне форума Ответить с цитированием
Старый 14.10.2019, 14:23   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

и к замечанию p51x ещё добавлю:

Цитата:
Сообщение от gribo4ek Посмотреть сообщение
Код:
Memo1.Lines.Text := GetDosOutput( 'cmd.exe ' + start, '', Rc );
вторым параметром нужно ОБЯЗАТЕЛЬНО указать рабочую папку.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.10.2019, 05:57   #6
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Напишите пожалуйста как должна выгладить строка???
gribo4ek вне форума Ответить с цитированием
Старый 15.10.2019, 09:24   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

попробуйте так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  RC: Cardinal;
  WorkDir :String;
begin
  WorkDir := ExtractFilePath(Application.ExeName);
  Memo1.Lines.Text := GetDosOutput( 'cmd /c '+start, WorkDir, Rc );
  ShowMessage( ' Отладка: Код результата = '+IntToStr(Rc));
end;
p.s. возможно, что двойные кавычки в строке придётся ещё удвоить..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.10.2019, 10:32   #8
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
попробуйте так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  RC: Cardinal;
  WorkDir :String;
begin
  WorkDir := ExtractFilePath(Application.ExeName);
  Memo1.Lines.Text := GetDosOutput( 'cmd /c '+start, WorkDir, Rc );
  ShowMessage( ' Отладка: Код результата = '+IntToStr(Rc));
end;
p.s. возможно, что двойные кавычки в строке придётся ещё удвоить..
Выдало вот так
Изображения
Тип файла: jpg 1111.JPG (41.8 Кб, 19 просмотров)
gribo4ek вне форума Ответить с цитированием
Старый 15.10.2019, 10:37   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

так попробуйте:


Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  RC: Cardinal;
  mycommand, WorkDir :String;
begin
   mycommand := '""C:\Program Files (x86)\pgAdmin III\1.16\pg_dump.exe"" --host "192.168.15.50"  '+
      '--port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data '+
      '--section data --section post-data --encoding UTF8 --verbose --file "D:\old.backup" "gilev"';
  WorkDir := ExtractFilePath(Application.ExeName);
  Memo1.Lines.Text := GetDosOutput( 'cmd /c '+mycommand, WorkDir, Rc );
  ShowMessage( ' Отладка: Код результата = '+IntToStr(Rc));
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.10.2019, 10:45   #10
gribo4ek
Пользователь
 
Регистрация: 07.05.2011
Сообщений: 24
По умолчанию

Тоже самое
Может дело в кодировке??
Изображения
Тип файла: jpg 111.JPG (44.8 Кб, 18 просмотров)
gribo4ek вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск jar revanatar Общие вопросы по Java, Java SE, Kotlin 4 22.10.2011 19:01
Запуск .scr BoT_T Общие вопросы Delphi 2 03.10.2010 20:25
Запуск из res? Virus25 Общие вопросы Delphi 6 17.01.2010 02:51
Запуск exe Betty Общие вопросы Delphi 6 10.07.2009 20:25
Запуск ехе Killbrum Помощь студентам 8 19.08.2008 17:06


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840