![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте. Написал код, который скачивает с сервера файл, проверяет этот файл и если условие верно, то показывает одно окно, если не верно, происходит выход из формы.
Это я образно описал, вот сам код, с комментариями: PHP код:
Код:
showmessage('У вас самая последняя версия'); form9.Close; Цитата:
В чем может быть проблема? ![]() |
#2
|
|||
|
|||
![]() Если (в данном случае) в переменной form9 хранится ссылка на объект класса TForm9, то корректность вызова метода Close внутри метода FormShow - сомнительна ...
|
#3
|
||||
|
||||
![]() Цитата:
Последний раз редактировалось T-dayne, 07.04.2010 в 18:48. |
#4
|
|||
|
|||
![]() А нужно ли размещать всю логику в методе FormShow ?
Может быть лучше что-то вроде этого : Код:
type TForm9 = class(TForm) ... ... private { Private declarations } public { Public declarations } function Execute(нужные параметры) : boolean; end; var form9: TForm9; function TForm9.Execute(нужные параметры) : boolean; begin Result:=false; ...инициализация того, что надо if ShowModal = mrOk then begin Result:=true; ... Действия, если все OK end else begin ... иначе ... end; end; |
#5
|
||||
|
||||
![]() Цитата:
![]() Код:
if ShowModal = mrOk ![]() |
#6
|
|||
|
|||
![]() Цитата:
|
#7
|
|||
|
|||
![]() Размещение специального функционала в методе FormShow - не самый лучший метод реализации.
Разве что Вы планируете наследовать этот функционал в наследниках (от этой формы) ... |
#8
|
||||
|
||||
![]() Попробовал запихнуть close в отдельную процедуру и запустить ее из под OnShow , ошибки нет, но программа виснет наглухо в этот момент.
Вопрсо все еще актуален! |
#9
|
|||
|
|||
![]() Цитата:
А что-то вроде этого : Код:
program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form9}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm9, Form9); Application.Run; end. ======================= unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form9.MyShowForm; end; end. ======================= unit Unit2; interface uses IniFiles, Dialogs, Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls, jpeg; type TForm9 = class(TForm) Panel1: TPanel; OKBtn: TButton; CancelBtn: TButton; Panel2: TPanel; Label1: TLabel; gif: TImage; Memo1: TMemo; Button1: TButton; Button2: TButton; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private FileOnNet, LocalFileName: string; ini: tinifile; public procedure MyShowForm; function GetInetFile(FileOnNet,LocalFileName : string) : boolean; end; var Form9: TForm9; implementation {$R *.dfm} procedure TForm9.MyShowForm; begin gif.Visible:=true; label1.Visible:=true; //Height:=80; memo1.Visible:=false; button1.Visible:=false; button2.Visible:=false; //возвращаем исходные данные окна Show; Timer1.Enabled:=true; end; function TForm9.GetInetFile(FileOnNet,LocalFileName : string) : boolean; begin Result:=true; //... end; procedure TForm9.Timer1Timer(Sender: TObject); Var fnSize : integer; begin Timer1.Enabled:=false; FileOnNet:='http://127.0.0.1/mysite/finalv.ini'; LocalFileName:='finalv.ini'; label1.Caption:='Подключаемся...'; if GetInetFile(FileOnNet,LocalFileName) then //Если файл скачан успешно begin label1.Caption:='Проверка наличия версии...'; ini:=tinifile.Create(extractfiledir(application.ExeName)+'\finalv.ini'); TRY fnSize:=ini.ReadInteger('main', 'finalv', 1); FINALLY ini.Free; END; if fnSize>1331033 then //сравниваем версию на сайте и версию программы begin gif.Visible:=false; //если есть новая версия активируем текст и кнопки обновления label1.Visible:=false; //Height:=134; memo1.Visible:=true; button1.Visible:=true; button2.Visible:=true; end else begin //если при сравнении версии одинаковы то showmessage('У вас самая последняя версия'); Close; end; end else //если файл скачать не удалось то выводим: showmessage('Не удалось подключиться к серверу обновления!'); end; end. |
#10
|
||||
|
||||
![]() roamer
Огромное вам спасибо, все более менее работает. Последний раз редактировалось T-dayne, 10.04.2010 в 08:25. |