Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема [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) не запускается


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо