![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск exe файла [D6, XP]
BioStaR © (2008-08-11 11:51:00)Привет всем! У меня такой вопрос...
Можно ли с помощью Delphi программно активировать, запустить exe файл?! К примеру просто указав путь к нему или через реестр, найдя ключ, который содержит в себе путь к файлу?
Подскажите пожалуйста, если такое возможно, буду благодарен!
Anatoly Podgoretsky (2008-08-11 16:28:00) [1]> Denis__ (11.08.2008 16:08:33) [33]
Он пошутил, но это может быть и он.
Anatoly Podgoretsky (2008-08-11 16:19:00) [2]> Denis__ (11.08.2008 16:02:31) [31]
Это выше create finally end;
Denis__ (2008-08-11 16:08:00) [3]
> Это Application.OnException. А если его нет, то покажут
> тебе окошко с сообщением об ошибке, и работа дальше продолжится.
>
Фух.. Спасибо. Наконец-то:)А то я уж мозг напрягаю, что ж за вышестоящий.
Ega23 (2008-08-11 16:04:00) [4]
> Вышестоящий это какой? а том примере покажите, а? Выделите
> как-нибудь:)
Это Application.OnException. А если его нет, то покажут тебе окошко с сообщением об ошибке, и работа дальше продолжится.
Denis__ (2008-08-11 16:02:00) [5]
> , то управление будет передано вышестоящиму обработчику
Вышестоящий это какой? а том примере покажите, а? Выделите как-нибудь:)
Anatoly Podgoretsky (2008-08-11 16:01:00) [6]
> Можно поподробнее?
Большинство исключение передаются выше, это принципы их правильного использования, ошибка не должна скрываться, а должна доходить до того, до кого надо. В примере ее обязан обработать вышестоящий обработчик и именно он должен узнать, что это произошло.
Anatoly Podgoretsky (2008-08-11 15:58:00) [7]
> А если в деструкторе возникнет исключение?
В деструкторе не должно возникать исключений, но если возникнет, то управление будет передано вышестоящиму обработчику и так далее.
Или ты на каждый обработчик будешь громоздить вавилонскую башню, а на ее работу другую башню, а на нее еще и так далее, пока ишак не умрет.
Denis__ (2008-08-11 15:57:00) [8]
> Оно будет перехвачено вышестоящим обработчиком.
Это каким? Я что-то сосвем запутался. Что вы называете вышестоящим?:)
> Ты пойми: не все исключения надо обязательно перехватывать.
Можно поподробнее?
Ega23 (2008-08-11 15:51:00) [9]
> Опять непонятки. А если в деструкторе возникнет исключение?
Оно будет перехвачено вышестоящим обработчиком.
Ты пойми: не все исключения надо обязательно перехватывать. :)
Denis__ (2008-08-11 15:48:00) [10]
> Create...
> try
> try
> ...
> except
> ...
> end;
> finally
> Free;
> end;
Опять непонятки. А если в деструкторе возникнет исключение?
Denis__ (2008-08-11 15:44:00) [11]
> Ega23 © (11.08.08 15:38) [23]
Спасибо
Anatoly Podgoretsky (2008-08-11 15:41:00) [12]
> У меня например возникла мысль что тогда вот так надо
Данный код для потоковых серверов. Если убрать внешний try то конструкция должна быть такая
Create...
try
try
...
except
...
end;
finally
Free;
end;
Ega23 (2008-08-11 15:38:00) [13]
> Интуиция говорит, что так не надо, прошу пояснить:)
Почему? В целом - не надо. Но вот видел код, в котором в конструкторе возбуждалось исключение. И в том случае писать надо было действительно так:
try
Create
try
.....
finally
Free;
end;
except
.....
end
просто в конструкции
Create;
try
......
finally
Free;
end;
деструктор будет по-любому вызван. И если вдруг там получится исключение, то ты его перехватишь на более высоком уровне.
А в твоём случае (если исключение в деструкторе), ты на это дело 2 раза подряд натыкаешься, что не есть хорошо.
Denis__ (2008-08-11 15:31:00) [14]
> Не важно писать надо правильно, а как правильно тебе показали.
Я ж неспорю:) Я понять хочу. У меня например возникла мысль что тогда вот так надо
try
Reg := TRegistry.Create;
try
try
with Reg do
begin
....
end;
finally
Reg.Free;
end;
except
//Ошибка в деструкторе
end;
except
//Ошибка в конструкторе
end;
Интуиция говорит, что так не надо, прошу пояснить:)
Anatoly Podgoretsky (2008-08-11 15:23:00) [15]> Denis__ (11.08.2008 15:05:20) [20]
Не важно писать надо правильно, а как правильно тебе показали.
Denis__ (2008-08-11 15:05:00) [16]А когда такое может произойти?
Может ли быть иключение в конструкторе?
Ega23 (2008-08-11 15:01:00) [17]
> Ну, не знаю... А что, есть смысл? Объясните, плиз.
Ну, например, исключение в деструкторе.
Denis__ (2008-08-11 14:58:00) [18]
> Ega23 © (11.08.08 14:55) [17]
Ну, не знаю... А что, есть смысл? Объясните, плиз.
Ega23 (2008-08-11 14:55:00) [19]А почему не так:
Reg := TRegistry.Create;
try
try
with Reg do
begin
RootKey := HKey_XXXX;
OpenKeyReadOnly('Ключ');
Path := ReadString('Параметр');
end;
except
.......
end;
finally
Reg.Free;
end;
Denis__ (2008-08-11 14:53:00) [20]var
Reg : TRegistry;
Path : String;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKey_XXXX;
OpenKeyReadOnly('Ключ');
Path := ReadString('Параметр');
Free;
end;
except
Reg.Free;
end;
if FileExists(Path) then
begin
ShellExecute(handle,nil,pChar(Path),'','',SW_SHOWNORMAL);).
end;
end;