![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А как можно зашить в код программы, что бы она по истечению срока [D6, Win2k]
PTE © (2002-06-05 09:36:00)А как можно зашить в код программы, что бы она по истечению определенного срока или требовала обновления, достаточно просто всплывающее окно или прекращала работать?
Может можно где почитать од этом?
Anatoly Podgoretsky (2002-06-05 21:41:00) [1]Насколько же проще должна быть программа, что бы она могла работать при такой простой защите
PVOzerski (2002-06-05 18:41:00) [2]Я, похоже, добился работоспособного варианта, хотя, может быть, и корявого.
1) Выкинул из .dpr строчку Application.CreateForm(TForm7, Form7);
2) Сваял нечто:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WmUser(var msg);message WM_USER;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
if Now>=EncodeDate(2002,6,4)then
begin
Form7:=tForm7.Create(Application);
Form7.Show;
PostMessage(Handle,WM_USER,0,0);
end;
end;
procedure tForm1.WmUser(var msg);
begin
Hide;
end;
end.
3) Указываю на "подводные камни": Form1 у меня (и, вероятно, у Вас) - главная форма, а это
значит, что при попытке закрыть её вы выйдете из программы вообще. Поэтому у меня всё-таки
Hide, а не Close. Второе следствие отсюда же: если просто закрыть Form7, если Form1 уже Hidden,
приложение при этом выгружено не будет, так что надо прописывать Application.Terminate в
обработчике OnClose формы Form7.
JC (2002-06-05 18:09:00) [3]Помоему, всё очень просто:
если ты создаёшь Form1 перед тем как Form5, то в Create ты просто не можешь показать Form5(её надо сначала создать)
Gerakl (2002-06-05 18:01:00) [4]procedure TForm1.FormCreate(Sender: TObject);
.
.
raise exception.crete("Lya lya lya"); !!!
Kaban (2002-06-05 16:33:00) [5]В дополнение к Игорю Шевченко
Создаем первую, показываем пятую. Что-то проверяем, если не то, уничтожаем первую, показываем седьмую. Проще надо быть.
Игорь Шевченко (2002-06-05 16:30:00) [6]А Form7 чему равно?
А когда мы все научимся пользоваться отладчиком, блин ?!! (вопль души :-))
Kaban (2002-06-05 16:26:00) [7]Ну во первых строка Form5.Close вообще не нужна. Ошибка здесь может возникнуть, если ты при закрытии этой формы ее уничтожаешь
PTE (2002-06-05 16:16:00) [8]А не в этом дело?
Form5:=TForm5.Create(Application);
Form5.ShowModal;
Form5.Close;
?
Так как когда вываливается в ошибку, то потом ссылается в проекте на Application.CreateForm(TForm5, Form5);
PTE (2002-06-05 16:07:00) [9]Form1.Close на Form1.Hide пробывал не помогло.
Ошибка пропадает если я убираю Form7.Show;
если не так, то как ещё можно вызвать Form7 при этом условии и закрыть Form1?
if Now >= EncodeDate(2002,6,4)
then begin
Form1.Close;
Form7.Show;
....
Игорь Шевченко (2002-06-05 16:05:00) [10]procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Close;Form7.Show;
В этот момент значение переменной Form1 еще равно nil, оттуда и ошибка.
Уберите переменную Form1 и будет вам счастье
PVOzerski (2002-06-05 15:55:00) [11]Form1.Close на Form1.Hide менять не пробовали?
Kaban (2002-06-05 15:55:00) [12]по-моему ошибка связана с тем, что нельзя вызывать метод Close в событии OnCreate. Проверь
PTE (2002-06-05 15:50:00) [13]прошу прощения
вот
procedure TForm1.FormCreate(Sender: TObject);
begin
Form5:=TForm5.Create(Application);
Form5.ShowModal;
Form5.Close;
if Now >= EncodeDate(2002,6,4)
then begin
Form1.Close;Form7.Show;
end else
ReadParams;
end;
Вываливается с сообщением
Project Project1.exe raised exception class EAccessViolation with message "Access violetion at address 0045B246 in module "Project1.exe". Read of address 000002EC". Process stopped. Use Step or Run to continue
Как это исправлять?
Что за класс с исключением?
PVOzerski (2002-06-05 15:39:00) [14]>if Now >= EncodeDate(2002,6,4)
> then begin
> Form1.Close and Form7.Show
> else
Это что за язык-то? После then есть begin, а перед else нет end? А это что за чудо:
Form1.Close and Form7.Show вне выражения?
f Now >= EncodeDate(2002,6,4)
then begin
Form1.Close;Form7.Show;
end else
....
Kaban (2002-06-05 15:38:00) [15]может сравнение происходит в onCreate, поэтому нельзя вызывать
Close и Show?
Игорь Шевченко (2002-06-05 15:30:00) [16]Ошибку привести конечно не судьба - надо, чтобы я за компилятор работал ?
PTE (2002-06-05 15:22:00) [17]почему вываливается в ошибку?
if Now >= EncodeDate(2002,6,4)
then begin
Form1.Close and Form7.Show
else
....
Игорь Шевченко (2002-06-05 14:02:00) [18]Конечно не работает.
if Now >= EncodeDate(2002,6,4) - сработает
PTE (2002-06-05 14:00:00) [19]procedure TForm1.FormCreate(Sender: TObject);
begin
if EncodeDate(2002,6,4) >= Now then
Close;
end;
не не работает
Игорь Шевченко (2002-06-05 12:35:00) [20]if EncodeDate(2002,6,7) >= Now then
...