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

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

Запуск exe файла [D6, XP]


Страницы:   1 2

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;


Страницы:   1 2

Наверх

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