![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема [D7, XP]
FEV © (2009-01-08 11:18:00)Вопрос, пишу маленькую программку...
Необходим запуск с параметром.
Использую ShellExecute(Handle, nil, 'file', 'parametr', nil, SW_SHOW);
В общем весь код таков:
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
edit1.Text:=OpenDialog1.Files[0];
end;
procedure TForm1.Button2Click(Sender: TObject);
var
sth:pansichar;
begin
sth:=pansichar(edit1.text);
ShellExecute(Handle, nil, 'vivdec', sth, nil, SW_SHOW);
end;
Имеется sth(pansichar)... Если sth равен полному пути (D:\asd\viv\asd.viv), то программа (vivdec) не запускается, но если он пуст илиравен viv\asd.viv (при условии, что сама программа в D:\asd\), то запускается и выполняется... Но самое интересное, что если я сам ввожу параметр ShellExecute(Handle, nil, 'vivdec', 'D:\asd\viv\asd.viv', nil, SW_SHOW); то программа также запускается и выполняется нормально. Специально проверял, что будет в результате sth:=pansichar(edit1.text), там всё нормально. В чем проблема? Или каким другим образом запускать внешний файл с параметром?
qqq (2009-01-08 12:06:00) [1]видать, пути текущие разные
в одном случае находит твою внешнюю прогу, в другом - нет
FEV (2009-01-08 11:55:00) [2]Чтож. Посмотрю...
Но просто странно то, что я сам ввожу и что передается из edit'a одно и то же(100%, проверял), но результат разный...
Сергей М. (2009-01-08 11:44:00) [3]
> Хотелось бы все равно знать к чему
Справку надо читать, тогда и знать будешь.
Сергей М. (2009-01-08 11:43:00) [4]
> потому что она не запускается
Железная логика - "программа не запускается, потому что она не запускается".
> Значит ошибка вызова
Угу, ошибка.
А гдеанализ ее кода ?
Ведь ShellExecute - это функция!
А ты даже не сподобился получить и проанализировать результат ее вызова.
И при этом ты смеешь заявлять, что кто-то там у тебя "не запускается")
FEV (2009-01-08 11:41:00) [5]Фу. Нарыл.
Вставил:
procedure TForm1.Button2Click(Sender: TObject);
var
sth:pansichar;
begin
sth:=pansichar('vivdec.exe '+edit1.text);
winexec(sth,SW_SHOW);
end;
Теперь пашет нормально... Видать команда ShellExecute(Handle, nil, 'vivdec', sth, nil, SW_SHOW); к чему то придирчив... Хотелось бы все равно знать к чему...
FEV (2009-01-08 11:34:00) [6]
> Если sth равен полному пути (D:\asd\viv\asd.viv), то программа
> (vivdec) незапускается.
Если я его пишу ВРУЧНУЮ, вместо sth, то работает... Парадокс.
FEV (2009-01-08 11:31:00) [7]Ну потому что она не запускается. Не появляется в процессах. Да и есть 3 способа ее работы...
1. нет параметра - она нам об этом пишет, сама прога.
2. параметр не верен - прога запускается и пишет об ошибке.
3. параметр верен - прога выполняет то, для чего написана
А тут ноль. Никаких действий. Значит ошибка вызова. Но всё проверил, ошибок нет. Всё должно работать, но не работает. Есть ли другой способ запускать внешние файлы с параметром?
Плохиш (2009-01-08 11:30:00) [8]
> Имеется sth(pansichar)... Если sth равен полному пути (D:
> \asd\viv\asd.viv), то программа (vivdec) не запускается,
> но если он пуст илиравен viv\asd.viv (при условии, что
> сама программа в D:\asd\), то запускается и выполняется.
> ..
Никаких чудес. Пиши полный путь для своей vivdec.
Сергей М. (2009-01-08 11:23:00) [9]
> программа (vivdec) не запускается
На основании чего сделано такое умозаключение ?