Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Проблема в вызове внешних программ !!!


Автор: Sasha 14.6.2002, 19:56
Привет ребята !!!
Взялся помочь другу разобраться с программой.
Вот небольшой пример нажатия кнопки << ДАЛЕЕ>>

Код
1.procedure TForm1.Button2Click(Sender: TObject);
2.var st :string;
3.REG,reguninst : TRegistry;
4.begin
5.  if not(directoryexists(edit1.Text)) then
6.    begin
7.      if messagedlg('Каталог '+edit1.Text+' не      
8. существует,'#10#13'создать?',mtconfirmation,[mbyes,mbno,mbcancel],0)
9. =mryes    then
10.    begin
11.      Forcedirectories(edit1.Text+'\');
12.    end
13.  else edit1.Text:='C:';
14. end;
15. st:=currdir+'\unrar.exe x -o+ '+FILE_PROG+' ' +edit1.text+ '\';
//16. showmessage(st);
//17. showmessage(edit1.text);
18. winexec(pchar(st),sw_minimize);
//19. st:='unrar.exe x -o+ '+FILE_dlls+' ' +'c:\windows';
//20. winexec(pchar(st),sw_minimize);


Мой друг пытается сделать инсталятор в качестве практикума.
Примерно так:
Выбираем путь к инсталяции программы, потом нажимаем кнопку <<ДАЛЕЕ>>
в листинге в (15) строке указывается что unrar.exe находится в текущем каталоге подставляем ключи, файл для распаковки например setup.rar, и путь для распаковки. В результате у нас получается вот такая строка:
st:=C:\Project\unrar.exe x -o+ setup.rar C:\TMP\TURBOPASCAL\
В строке 18. подставляем переменную st в функцию winexec и в результате что мы получаем ?.  Да ничево программа не выполняется.
Мне кажется что ошибка в строке 18.
Невызывается внешняя программа.

Ребята подскажите свое мнение  smile

Автор: Vit 14.6.2002, 21:16
Используй  ShellExecute или CreateProcess. Функция WinExec - уже 7 лет существует только для поддержки совместимости с программами написанными для  Win3.1. ИМХО, она сейчас не должна применятся вообще, а при такой сложной коммандной строке тем более. Примеры по применению ShellExecute или CreateProcess уже приводились на форуме не однократно.

Автор: Song 15.6.2002, 09:04
Т.е. как не выполняется? Не запускается вообще? Не делает то что нужно ? Ещё может как ?

Автор: Goph 15.6.2002, 16:40
Цитата(Song @ 15.6.2002, 09:04)
Т.е. как не выполняется? Не запускается вообще? Не делает то что нужно ? Ещё может как ?

Song сильно ты умный... :sneaky2

Автор: Vit 17.6.2002, 02:03
Только не надо доходить до оскорблений, да Song действительно сильный программист, и я не пойму почему это кого-то должно задевать, тем более его вопрос совершенно корректен. Почему-то люди любят писать фразу "не работает!" - на что мне хочется всегда ответить, "а может Вы компьютер забыли включить?", на форуме Вам никто не обязан неичего отвечать, тем более писать за Вас код, если у Вас что-то не работает, то 95% по выявлению причин должны делать Вы сами, а не говорить не работает, заставляя задавать кучу наводящих вопрососв как именно не работает... Вы привели 20 строк текста, а надо ли, если вы думаете что не работает WinExec, так и спросите "почему у меня

WinExec('c:\currdir\unrar.exe x -o FILE_PROG edit1text', sw_minimize);

генерит ошибку (какую)?
не компиллируется (с какой ошибкой)?
Не выполняется?

И не надо обижаться на уточняющие вопросы, или давайте я вам для примера брошу 20 строк моего кода и скажу "не работает?" - хотите попробовать?

Автор: Goph 17.6.2002, 15:59
Просто в большенстве случаев не разбирая он именно так и отвечает, даже если задан вопрос исчерпывающий...
А вообшем Vit с тобой нельзя не согласится :)

Автор: Song 20.6.2002, 19:55
Цитата(HAspiring @ 17.6.2002, 16:59)
Просто в большенстве случаев не разбирая он именно так и отвечает, даже если задан вопрос исчерпывающий...

Хмм.. не правда  :D

Действительно "не работать" может по всякому :)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)