Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2013, 21:54   #1
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию Перезапуск программы

Доброго времени суток, господа программисты! Мне необходимо перезапустить программу. Использую такой код (нашел в инете).

Код:
procedure TfrmMain.N11Click(Sender: TObject);
var
progPath: string;
namePath: string;
resultnameprogPath: string;

 begin
   progPath:=ExtractFilePath(application.exename);
   namePath:= ExtractFileName(application.exename);
   resultnameprogPath:= progPath+namePath;

  WinExec('resultnameprogPath', SW_SHOW); 
  Application.Terminate;
Перезапуск не происходит, программа тупо закрывается и всё.

Вот такой код у меня срабатывает, как надо:

Код:
  WinExec('C:\Test\Test.exe', SW_SHOW); 
  Application.Terminate;
Чтобы убедиться, что у меня получился правильный путь, я выводил переменную resultnameprogPath в Edit. Тут всё четко. Подскажите пожалуйста, в чем может быть причина?
Евгений_Магистр вне форума Ответить с цитированием
Старый 22.03.2013, 23:02   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А зачем 'resultnameprogPath' в кавычках?
ReportCube вне форума Ответить с цитированием
Старый 22.03.2013, 23:06   #3
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
А зачем 'resultnameprogPath' в кавычках?
А иначе он встает на этом месте и пишет: [DCC Error] MainFrm.pas(306): E2010 Incompatible types: 'string' and 'PAnsiChar'
Евгений_Магистр вне форума Ответить с цитированием
Старый 22.03.2013, 23:13   #4
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Так и напишите (PAnsiChar(resultnameprogPath),...
ReportCube вне форума Ответить с цитированием
Старый 22.03.2013, 23:23   #5
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Так и напишите (PAnsiChar(resultnameprogPath),...

Код:
var
progPath: string;
namePath: string;
resultnameprogPath: string;

 begin
   progPath:=ExtractFilePath(application.exename);
   namePath:= ExtractFileName(application.exename);
   resultnameprogPath:= progPath+namePath;

  WinExec(PAnsiChar(resultnameprogPath), SW_SHOW);
  Application.Terminate;
Вот так у меня сейчас, но программа не перезапускается, а просто закрывается.
Евгений_Магистр вне форума Ответить с цитированием
Старый 22.03.2013, 23:36   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Попробуйте так:
Цитата:
uses ShellAPI;

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
      ShellExecute(0, 'Open', PWideChar(Application.ExeName), nil, nil, SW_SHOWNORMAL);
      Close;
end;

Последний раз редактировалось ReportCube; 22.03.2013 в 23:38.
ReportCube вне форума Ответить с цитированием
Старый 23.03.2013, 02:59   #7
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Попробуйте так:
Спасибо большое! Всё работает!
Евгений_Магистр вне форума Ответить с цитированием
Старый 23.03.2013, 13:16   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А какой вообще смысл в перезапуске программы?
IMHO идеи о перезапуске могут появиться только в результате ошибок проектирования.
Следовательно, нужно не бороться с симптомами, а устранять причину.
s-andriano вне форума Ответить с цитированием
Старый 23.03.2013, 13:52   #9
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
А какой вообще смысл в перезапуске программы?
IMHO идеи о перезапуске могут появиться только в результате ошибок проектирования.
Следовательно, нужно не бороться с симптомами, а устранять причину.
Да там сложная ситуация очень. Отрисовывается график перерывов с помощью графики и сотрудники. И вот когда добавляешь сотрудника нового, он отображается только после перезапуска программы. Отрисовка по новой происходит.
Евгений_Магистр вне форума Ответить с цитированием
Старый 23.03.2013, 13:54   #10
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Явная бага или недоработка, для отрисовки перезапускать приложение? Интересный способ
ReportCube вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перезапуск Кристинка89 Общие вопросы Delphi 9 10.03.2012 09:57
Перезапуск программы Михаил Юрьевич Общие вопросы Delphi 25 18.07.2011 10:29
Перезапуск программы Михаил Юрьевич Общие вопросы Delphi 3 07.01.2011 23:52
Перезапуск программы раз в сутки. 500 WMR. Bengl Фриланс 8 17.09.2010 17:51
Перезапуск потока RNT Общие вопросы C/C++ 3 14.08.2009 14:54