Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.08.2016, 14:31
starcon starcon вне форума
Новичок
 
Регистрация: 15.03.2014
Сообщения: 84
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Запуск другой формы

Вопрос таков.
Есть программа , которая по умолчанию запускается с главной формой FORM1, вроде все хорошо и все устраивает.
Пишу обновление для своей программы и хочу ,когда есть новая версия программы на сервере по умолчанию загружалась FORM2.

То есть , когда программа свежая грузится форма 1, а когда есть новая версия тогда форма2.

Как заставить открываться форму 2?
Ответить с цитированием
  #2  
Старый 25.08.2016, 14:38
js roman1 js roman1 вне форума
Прохожий
 
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
По умолчанию

Можете в Form1 поставить событие OnCreate.
Если будут обновления то нужно скрыть Form1.Visible:=false; а Form2.Visible:= True;
Ответить с цитированием
  #3  
Старый 25.08.2016, 14:43
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Код:
var
c_ver,new_ver:string;
begin
//получаешь версию своей программы,
//Версию новой программы
if c_ver < new_ver then
begin
Timer1.Enabled:=True;
end;

Timer1.onTick
Form2.Show;
Form1.Hide;

я так делаю )
если без таймера то падают ошибки

Последний раз редактировалось ApxaHGe1, 25.08.2016 в 14:46.
Ответить с цитированием
  #4  
Старый 25.08.2016, 14:50
starcon starcon вне форума
Новичок
 
Регистрация: 15.03.2014
Сообщения: 84
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Я просто не правильно выразился.
Суть такая , запускается программа , проверяются версии с сервером.
Если версия ниже , переименовываю текущую в qqq_old.exe и запускаю уже как qqq_old.exe и вот её хочу запустить уже с формой 2 (для продолжения скачивания программы qqq.exe)
Переименовываю , что бы qqq.exe не заругалась , что такое имя файла уже есть
Ответить с цитированием
  #5  
Старый 25.08.2016, 15:21
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Я так обновляюсь и все прекрасно работает
Код:
var
  ver:string;
  restart:TextFile;
  FileStream :TFileStream;
begin
ver:=IdHTTP1.Get('http://******.ru/soft/ver.txt');
if  ver > GetMyVersion then
begin
FileStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+'\'+'BC_new.exe', fmCreate);
IdHTTP1.Get('http://********.ru/soft/BC.exe', FileStream);
FileStream.Free;
AssignFile (restart,ExtractFilePath(Application.ExeName)+'\'+'restart.bat');
Rewrite (restart);
WriteLn (Restart,'DEL BC.exe');
WriteLn (Restart,'REN BC_new.exe BC.exe');;
WriteLn (Restart,'BC.exe');
WriteLn (Restart,'for /L %%b in (1,1,500) Do @Echo %%b >Nul');
CloseFile (restart);
ShellExecute(0,'OPEN',PAnsiChar (ExtractFilePath(Application.ExeName)+'\'+'restart.bat'),0,0,0);
ExitProcess(0);
end;
Ответить с цитированием
Этот пользователь сказал Спасибо ApxaHGe1 за это полезное сообщение:
starcon (25.08.2016)
  #6  
Старый 25.08.2016, 16:09
starcon starcon вне форума
Новичок
 
Регистрация: 15.03.2014
Сообщения: 84
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Тоже вариант .
Сделаю немного поправок под себя.

СПАСИБО
Ответить с цитированием
  #7  
Старый 25.08.2016, 18:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость вариантов много на самом деле

А что мешает запускаться не с основной программы, а с апдейтера? Запускается апдейтер, проверяет наличие обновлений, если есть перезаписывает и запускает, если нет - просто запускает.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 25.08.2016, 20:50
starcon starcon вне форума
Новичок
 
Регистрация: 15.03.2014
Сообщения: 84
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо за ответ.
Моя программа состоит из одного исполняемого файла и не хочется ради этого ещё одну для апдейта
Ответить с цитированием
  #9  
Старый 25.08.2016, 23:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

OK, сделай в DPR специальную ветку - сначала проверить на обновление и, если есть, обновить, потом запустить саму себя и выйти.

Код:
program Project1;

...

function IsUpdateAvailable : Boolean;
begin
...
end;

procedure UpdateProgram;
begin
...
end;

begin
  if IsUpdateAvailabe Then
  begin
    UpdateProgram;
    WinExec(ParamStr(0),SW_SHOWNORMAL);
    Halt(0);
  end;

  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
starcon (26.08.2016)
  #10  
Старый 26.08.2016, 22:31
starcon starcon вне форума
Новичок
 
Регистрация: 15.03.2014
Сообщения: 84
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо ,Забрал в проект
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter