Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 21:51   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
Печаль Триал в реестре( Исправление)

Привет. Пишу программу и написал для своей программы модуль под название RegTrial. Он позволяет мне работать над триалом в реестре и вот то место на которое я хотел бы обратить ваше внимание:
Код:
Trial:= TRegTrial.Create;//создаем элемент триала
Trial.Init('h_c_u');  //иницилизация(создание ключа)
if Trial.RegistertEx('MusicPlayer')=false then //если регистрация ещё не прошла то...
begin
a:=datetostr(date); //узнаем текущую дату
Trial.CreateTrial('MusicPlayer');
Trial.OpenTrial('MusicPlayer');
Trial.Registrator('ACTIVATE');
a1:=Date + 30; //создаем переменую триала
Trial.WriteDate(a);
a2:=strtodate(Trial.ReadCloseDate('Конечная дата')) - date; //узнаем остаток дней
Trial.WriteCloseDate('Конечная дата',datetostr(a1)); //записываем конечную дату
Form2.Label5.Caption:='Конечная дата:' + Trial.ReadCloseDate('Конечная дата'); //показываем конечную дату
Form2.Label6.Caption:='Осталось дней: ' + datetostr(a2) + ' дней'; //показываем сколько осталось дней
end
else //иначе
begin //прошла регистрация
Trial.OpenTrial('MusicPlayer');
a11:=Trial.ReadCloseDate('Конечная дата');
a1:=strtodate(a11);
a2:=a1 - date; //узнаем сколько осталось
Form2.Label5.Caption:='Конечная дата: ' + Trial.ReadCloseDate('Конечная дата'); //показываем конечную дату
Form2.Label6.Caption:='Осталось дней: ' + datetostr(a2) + ' дней'; //показываем сколько осталось дней
if (date=a1) and (Trial.ActivationExists('ACTIVATE')=false) then //узнаем активирована ли программа и кончился ли срок
begin
ShowMessage('Внимание! Истек срок активации! Активируйте программу!');
Form2.Show; //форма активации
end;

if Trial.ActivationExists('ACTIVATE')=false then  //узнаем активирована ли программа
Form2.Label4.Caption:='Cтатус: Неактивировано' //если нет то пишим это
else
Form2.Label4.Caption:='Статус: Активировано';  //иначе это
end;
Trial.Free;
И при старте программы вылезает такая ошибка:
Access violation at address 004899F1 in module 'MusicPlayer.exe'. Write address 00488CD8' Говорит, что какая-то блямба возникла при записи адреса. Кидается на первую строку:
Код:
 Trial:= TRegTrial.Create;
Подскажите как подправить?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 08.11.2012, 21:55   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Покажите конструктор вашего класса.
Человек_Борща вне форума Ответить с цитированием
Старый 08.11.2012, 21:58   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нужно знать как TRegTrial описан и реализован.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2012, 22:11   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Вот так:
Код:
type
TRegTrial = class(TObject)
private
{ Private declarations }
public
{ Public declarations }
constructor Create;
destructor Destroy; override;
function Init(R: string): Boolean;
function Registrator(Name: string): Boolean;
function ReadDate(): string;
function ActivationExists(Name: string): boolean;
function SetDate(Dat: string): boolean;
function Activater(Name: string; F: boolean): boolean;
function SetTime(F: string): boolean;
function ReadTime(): String;
function RegistertEx(ProgrammName: string): Boolean;
function DeleteTrial(ProgrammName: string): Boolean;
function WriteCloseDate(Name, Dat: string): Boolean;
function ReadCloseDate(Name: string): string;
function WriteCloseTime(Name, Tim: string): Boolean;
function ReadCloseTime(Name: String): String;
function WritePasswordKey(Name, Password: string): boolean;
function ReadPasswordKey(Name: string): String;
function OpenTrial(ProgrammName: string): Boolean;
function CreateTrial(ProgrammName: string): Boolean;
function WriteDate(Dat: string): Boolean;
end;
Ну и как вам?

P.S. Я сам его писал. Честно своими руками.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.

Последний раз редактировалось Stilet; 08.11.2012 в 22:18.
саша40 вне форума Ответить с цитированием
Старый 08.11.2012, 22:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пока никак. Показывай реализацию конструктора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2012, 22:20   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Пока никак. Показывай реализацию конструктора.
Держите:
Код:
constructor TRegTrial.Create;
begin
Reg:= TRegistry.Create;
end;
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 08.11.2012, 22:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... криминала вроде нет... Нужно отлаживать по шагам весь код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2012, 22:51   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

А можете хотяюы обьяснить: Что это за ошибка выпадает?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 08.11.2012, 23:16   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

саша40, Инструкция по адресу XXXXX не имеет права совать свой нос в адрес YYYY, за что была послана на юг гусей ловить.

В конструкторе жуков нету, за исключением этого грызуна:
Код:
Reg:= TRegistry.Create;
В классе нет нигде его объявлений. Возможны вы пытаетесь присвоить ново-созданный объект TRegistry.Create ещё физически не существующей переменной Reg.

Последний раз редактировалось Человек_Борща; 08.11.2012 в 23:19.
Человек_Борща вне форума Ответить с цитированием
Старый 08.11.2012, 23:34   #10
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
саша40, Инструкция по адресу XXXXX не имеет права совать свой нос в адрес YYYY, за что была послана на юг гусей ловить.

В конструкторе жуков нету, за исключением этого грызуна:
Код:
Reg:= TRegistry.Create;
В классе нет нигде его объявлений. Возможны вы пытаетесь присвоить ново-созданный объект TRegistry.Create ещё физически не существующей переменной Reg.
это переменая обьявлена в разделе var того-же unit.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение по работе типа ТРИАЛ. kir1381 Microsoft Office Excel 13 03.01.2017 10:07
Как сделать триал версию? Зод Общие вопросы Delphi 9 02.09.2011 11:40
Там, где кончается триал Tihon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 20.08.2009 16:48
Вечный триал косперского. uberchel Софт 0 11.08.2009 02:44