Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизА как можно зашить в код программы, что бы она по истечению срока Найти похожие ветки
← →
PTE (2002-06-05 09:36) [0]А как можно зашить в код программы, что бы она по истечению определенного срока или требовала обновления, достаточно просто всплывающее окно или прекращала работать?
Может можно где почитать од этом?
← →
Игорь Шевченко (2002-06-05 10:48) [1]Текущую дату сравнивать с началом срока
← →
PVOzerski (2002-06-05 11:36) [2]А потом умный юзер будет переставлять дату перед запуском? Или
соответствующую утилитку раздобудет или сам напишет? Я вот пришел
тоже сейчас к необходимости засунуть "жука" в прогу, которую
помаленьку пишу для заказчика, оказавшегося не вполне корректным в
вопросах оплаты. Не подумайте обо мне плохо - я хочу всего лишь
поставить защиту от копирования и ограничить срок работы демо-версии.
Так вот, идея такая. Часть кода отправить в dll"и и подгружать их
динамически. А пока dll не подгружена, прямо в ее код писать (находить
смещение можно по своей сигнатуре) дату последнего запуска. И, извините,
вот если эта дата перейдет лимит, тут уж никакая последующая переустановка
даты на компе не поможет.
← →
Игорь Шевченко (2002-06-05 11:41) [3]PVOzerski © (05.06.02 11:36)
На всякую хитрую ... найдется свой ...
Лучше воспитывать заказчиков. Например, отсутствием техподдержки
← →
PTE (2002-06-05 12:28) [4]1. я объясню в чем дело.
Мне это нужно не для того что бы кого-то построить или нет, а для того, что бы уберечь пользователей, своей конторы от ошибки, так какменяется форма отчетности часто, а так как я дату знаю я могу им влепить или закрытие при запуске или вылет окна с предупреждением.
2. насколько я понял это должно выглядить что-то типа этого или я не прав?
if DateTime(Now)<DateTime("07.06.2002")
then
Close;
Подскажите
← →
Игорь Шевченко (2002-06-05 12:35) [5]if EncodeDate(2002,6,7) >= Now then
...
← →
PTE (2002-06-05 14:00) [6]procedure TForm1.FormCreate(Sender: TObject);
begin
if EncodeDate(2002,6,4) >= Now then
Close;
end;
не не работает
← →
Игорь Шевченко (2002-06-05 14:02) [7]Конечно не работает.
if Now >= EncodeDate(2002,6,4) - сработает
← →
PTE (2002-06-05 15:22) [8]почему вываливается в ошибку?
if Now >= EncodeDate(2002,6,4)
then begin
Form1.Close and Form7.Show
else
....
← →
Игорь Шевченко (2002-06-05 15:30) [9]Ошибку привести конечно не судьба - надо, чтобы я за компилятор работал ?
← →
Kaban (2002-06-05 15:38) [10]может сравнение происходит в onCreate, поэтому нельзя вызывать
Close и Show?
← →
PVOzerski (2002-06-05 15:39) [11]>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
....
← →
PTE (2002-06-05 15:50) [12]прошу прощения
вот
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:55) [13]Form1.Close на Form1.Hide менять не пробовали?
← →
Kaban (2002-06-05 15:55) [14]по-моему ошибка связана с тем, что нельзя вызывать метод Close в событии OnCreate. Проверь
← →
Игорь Шевченко (2002-06-05 16:05) [15]procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Close;Form7.Show;
В этот момент значение переменной Form1 еще равно nil, оттуда и ошибка.
Уберите переменную Form1 и будет вам счастье
← →
PTE (2002-06-05 16:07) [16]Form1.Close на Form1.Hide пробывал не помогло.
Ошибка пропадает если я убираю Form7.Show;
если не так, то как ещё можно вызвать Form7 при этом условии и закрыть Form1?
if Now >= EncodeDate(2002,6,4)
then begin
Form1.Close;
Form7.Show;
....
← →
PTE (2002-06-05 16:16) [17]А не в этом дело?
Form5:=TForm5.Create(Application);
Form5.ShowModal;
Form5.Close;
?
Так как когда вываливается в ошибку, то потом ссылается в проекте на Application.CreateForm(TForm5, Form5);
← →
Kaban (2002-06-05 16:26) [18]Ну во первых строка Form5.Close вообще не нужна. Ошибка здесь может возникнуть, если ты при закрытии этой формы ее уничтожаешь
← →
Игорь Шевченко (2002-06-05 16:30) [19]А Form7 чему равно?
А когда мы все научимся пользоваться отладчиком, блин ?!! (вопль души :-))
← →
Kaban (2002-06-05 16:33) [20]В дополнение к Игорю Шевченко
Создаем первую, показываем пятую. Что-то проверяем, если не то, уничтожаем первую, показываем седьмую. Проще надо быть.
← →
Gerakl (2002-06-05 18:01) [21]procedure TForm1.FormCreate(Sender: TObject);
.
.
raise exception.crete("Lya lya lya"); !!!
← →
JC (2002-06-05 18:09) [22]Помоему, всё очень просто:
если ты создаёшь Form1 перед тем как Form5, то в Create ты просто не можешь показать Form5(её надо сначала создать)
← →
PVOzerski (2002-06-05 18:41) [23]Я, похоже, добился работоспособного варианта, хотя, может быть, и корявого.
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.
← →
Anatoly Podgoretsky (2002-06-05 21:41) [24]Насколько же проще должна быть программа, что бы она могла работать при такой простой защите
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c