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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.11.2009, 11:58
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
Вопрос Trial в программе

Дано: Программа - только EXE-файл.
Задача - вписать в исходник проверку текущей даты с датой первого запуска программы (притом в дату запуска добавить точное время). Цель - заблокировать запуск если накрутилось н-ое кол-во дней и дать возможность ввести ключик. Генерация ключей - реализована. А вот проверку - не умею.
Ответить с цитированием
  #2  
Старый 23.11.2009, 12:39
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Немного теории...
Дату тервого запуска можно хранить в 2-х местах...в реестре или в файле...можно хранить в явном или зашифрованном виде, но это уже реализция...
Дата в Delphi хранится в виде дробного числа, целая часть количество дней с какой то даты (по моему 1 декабря 1899 года), дробная чать время(формат не помню)...
Получешь текущую дату, получаешь дату первого запуска, вычитаешь одну дату из другой и сравниваешь количетсво дней...
Вот функции работы с датой и временем...
http://www.helloworld.ru/texts/comp/.../var/var54.htm
__________________
В начале был Бит, потом Байт и только потом появилось Слово...

Последний раз редактировалось NIch, 23.11.2009 в 12:42.
Ответить с цитированием
  #3  
Старый 23.11.2009, 13:31
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
По умолчанию

спасибо... А можно все-таки в EXE-шник записать?

И если реализовывать то как?(DLL, TXT.....)
Ответить с цитированием
  #4  
Старый 23.11.2009, 14:11
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Если экзешник засунуть и можно, то это проблематично...С таким никогда не сталкивался...
Вот немного инфы по защите программ...
http://www.z-oleg.com/secur/articles/progprotect.php
http://www.delphisources.ru/forum/showthread.php?t=9934
Почитай...защита шарованых программ дело неблагодарное...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #5  
Старый 23.11.2009, 14:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,090
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Можнто-то можно, в ресурсы. только вот учти, что мнгие антивирусы это дело отловят и покажут пользователю, а это уже дыра в защите. Вообще, я бы посмотрел в сторону нормальных "навесных" защит, которые умеют нормально интегрироваться с программой и предоставляют кучу хороших возможностей для защиты.
Ответить с цитированием
  #6  
Старый 23.11.2009, 15:48
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
По умолчанию

Тогда приведите, пожайлуста пример записи/чтения переменной в Реестр или еще как нибудь, кроме TXT.
Ответить с цитированием
  #7  
Старый 23.11.2009, 15:50
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
По умолчанию

просмотрел, спасибо. Но задача поставлена - надо как-то решить... Хотя бы на примитивном уровне. Там где будут ее использовать взламывать вряд ли будут.
Ответить с цитированием
  #8  
Старый 23.11.2009, 16:00
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Работа с реестром...Автор Алексей Федоров...
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
unit RDUnit;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
 
Forms, Dialogs, StdCtrls, Registry;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormClose(Sender: TObject;
      var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation{$R *.DFM}var
  RegFile: TRegIniFile;
const
  //Подсекция
  SubKey: string = 'Software\RegDemo';
  // Элемент для хранения логических данных
  BoolKey: string = 'BoolKey';
  // Элемент для хранения целочисленных данных
  IntKey: string = 'IntKey';
  // Элемент для хранения строчных данных
  StrKey: string = 'StrKey';
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Создать экземпляр класса
  RegFile := TRegIniFile.Create(SubKey);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Записать целочисленное значение
  RegFile.WriteInteger(IntKey, 'Value', 1998);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  // Записать булево значение
  RegFile.WriteBool(BoolKey, 'Value', True);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  // Записать строку
  RegFile.WriteString(StrKey, 'Value', 'Demo');
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  // Считать целочисленное значение
  Memo1.Lines.Add('Int Value = ' +
    IntToStr(RegFile.ReadInteger(IntKey,
    'Value', 0)));
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  // Считать булево значение
  if RegFile.ReadBool(BoolKey, 'Value', False) then
    Memo1.Lines.Add('Bool Value = True')
  else
    Memo1.Lines.Add('Bool Value = False');
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  // Считать строку
  Memo1.Lines.Add(RegFile.ReadString(StrKey, 'Value', ''));
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // Удалить секцию
  RegFile.EraseSection(SubKey);
  // Освободить память
  RegFile.Free;
end;
end.
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #9  
Старый 23.11.2009, 18:05
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
По умолчанию

Не получалось копированием(а странно) - как только ручками набрал - заработало!

Последний раз редактировалось AntoNechayuk, 24.11.2009 в 09:05.
Ответить с цитированием
  #10  
Старый 24.11.2009, 09:03
AntoNechayuk AntoNechayuk вне форума
Новичок
 
Регистрация: 23.11.2009
Сообщения: 58
Репутация: 10
По умолчанию

с реестром все получилось! Огромное спасибо NIch.

Теперь прошу - дайте пример как с ресурсом сделать!! И желательно чтоб "как для новичка". Заранее благодарен.
Ответить с цитированием
  #11  
Старый 24.11.2009, 09:11
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

За спасибо пожалуйста...
А работа с ресурсами уже поднималась...пользуйся поиском...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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