Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

Проблема   Найти похожие ветки 

 
FEV   (2009-01-08 11:18) [0]

Вопрос, пишу маленькую программку...
Необходим запуск с параметром.
Использую 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), там всё нормально. В чем проблема? Или каким другим образом запускать внешний файл с параметром?


 
Сергей М. ©   (2009-01-08 11:23) [1]


> программа (vivdec) не запускается


На основании чего сделано такое умозаключение ?


 
Плохиш ©   (2009-01-08 11:30) [2]


> Имеется sth(pansichar)... Если sth равен полному пути (D:
> \asd\viv\asd.viv), то программа (vivdec) не запускается,
>  но если он пуст илиравен viv\asd.viv (при условии, что
> сама программа в D:\asd\), то запускается и выполняется.
> ..

Никаких чудес. Пиши полный путь для своей vivdec.


 
FEV   (2009-01-08 11:31) [3]

Ну потому что она не запускается. Не появляется в процессах. Да и есть 3 способа ее работы...
1. нет параметра - она нам об этом пишет, сама прога.
2. параметр не верен - прога запускается и пишет об ошибке.
3. параметр верен - прога выполняет то, для чего написана
А тут ноль. Никаких действий. Значит ошибка вызова. Но всё проверил, ошибок нет. Всё должно работать, но не работает. Есть ли другой способ запускать внешние файлы с параметром?


 
FEV   (2009-01-08 11:34) [4]


> Если sth равен полному пути (D:\asd\viv\asd.viv), то программа
> (vivdec) не запускается.

Если я его пишу ВРУЧНУЮ, вместо sth, то работает... Парадокс.


 
FEV   (2009-01-08 11:41) [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); к чему то придирчив... Хотелось бы все равно знать к чему...


 
Сергей М. ©   (2009-01-08 11:43) [6]


> потому что она не запускается


Железная логика - "программа не запускается, потому что она не запускается".


> Значит ошибка вызова


Угу, ошибка.
А где анализ ее кода ?
Ведь ShellExecute - это функция !
А ты даже не сподобился получить и проанализировать результат ее вызова.
И при этом ты смеешь заявлять, что кто-то там у тебя "не запускается")


 
Сергей М. ©   (2009-01-08 11:44) [7]


> Хотелось бы все равно знать к чему


Справку надо читать, тогда и знать будешь.


 
FEV   (2009-01-08 11:55) [8]

Чтож. Посмотрю...
Но просто странно то, что я сам ввожу и что передается из edit"a одно и то же(100%, проверял), но результат разный...


 
qqq   (2009-01-08 12:06) [9]

видать, пути текущие разные
в одном случае находит твою внешнюю прогу, в другом - нет



Страницы: 1 вся ветка

Текущий архив: 2009.02.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


2-1231191483
ply
2009-01-06 00:38
2009.02.15
Символ переноса строки в Hint


2-1230900561
Tatb9na
2009-01-02 15:49
2009.02.15
Ошибка запуска


2-1231119749
Andrnow
2009-01-05 04:42
2009.02.15
Вопрос по определению формы MDI приложения и про расширение файла


2-1230921661
New77
2009-01-02 21:41
2009.02.15
Как ограничить выбор в ComboBox - a, b, с и "Пусто"?