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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2012, 09:04   #1
Максим_83
Пользователь
 
Регистрация: 09.02.2012
Сообщений: 39
По умолчанию Delphi ошибка программы

Приветсвую всех. Написал в программе защиту со сверкой в реестре.
Чтение и запись реестра происходит без проблем. Если в реестре нет записи или она пуста то программа просит код, но если есть запись вылетает ошибка. Код защиты находится на другой форме.
Где мой недочёт? Помогите.

Код:
function ReadKey: string;
 var
 h: Tregistry;
 begin
 h :=TRegistry.Create;
 with h do
 begin
 try
 RootKey:=HKEY_LOCAL_MACHINE;
 OpenKey('SOFTWARE\Licenses\',false);
 Result:= ReadString('123');
 if Length(Result)=0 then
 Result:='Ключ не найден';
 Finally
 CloseKey;
 Free;
 end;
 end;
 end;

procedure TForm4.FormCreate(Sender: TObject);
begin
Edit1.Text := gH;
if Encode64(Edit1.Text) = ReadKey then
Form1.Show
 else
 ShowMessage('Активируйте программу!');
end;

Последний раз редактировалось Максим_83; 11.03.2012 в 09:08.
Максим_83 вне форума Ответить с цитированием
Старый 11.03.2012, 10:25   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Что за ошибка?
На первый взгляд - возможно значение реестра не String
Можно попробовать использовать except вместо finally...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 11.03.2012, 10:28   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
Цитата:
Form1.Show
немного телепатии
объект form1 не создан<=> Acseess Violation 000000...

в момент создания Form4
Цитата:
TForm4.FormCreate(Sender: TObject);
первая форма (Tform1) еще не была создана.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.03.2012 в 10:32.
evg_m вне форума Ответить с цитированием
Старый 14.03.2012, 15:34   #4
Максим_83
Пользователь
 
Регистрация: 09.02.2012
Сообщений: 39
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
немного телепатии
объект form1 не создан<=> Acseess Violation 000000...

в момент создания Form4
первая форма (Tform1) еще не была создана.
Прошу прощения за столь долгое отлучение.
Подскажите как это можно обойти? т.е. как сделать чтобы создались формы, но при этом к ним был закрыт доступ без кода?

Пробовал переделать код защиты на первую форму, без задействования последней, но ошибка всё та же вылетает.
Максим_83 вне форума Ответить с цитированием
Старый 14.03.2012, 15:56   #5
Максим_83
Пользователь
 
Регистрация: 09.02.2012
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Что за ошибка?
На первый взгляд - возможно значение реестра не String
Можно попробовать использовать except вместо finally...
Значение именно что String. Для проверки записи и выдёргивания кода из реестра выводил на форму в Edit эти значения.
Максим_83 вне форума Ответить с цитированием
Старый 16.03.2012, 19:18   #6
Максим_83
Пользователь
 
Регистрация: 09.02.2012
Сообщений: 39
По умолчанию

Неужели нет людей которые могут подсказать?
Максим_83 вне форума Ответить с цитированием
Старый 16.03.2012, 19:25   #7
grom333
Форумчанин
 
Аватар для grom333
 
Регистрация: 21.10.2008
Сообщений: 337
По умолчанию

Ну пусть создаться форма, но будет невидимой!
Лучше быть последним из львов, чем первым среди шакалов.
Мой чат
community on struggle with zoomics
grom333 вне форума Ответить с цитированием
Старый 19.03.2012, 13:40   #8
Максим_83
Пользователь
 
Регистрация: 09.02.2012
Сообщений: 39
По умолчанию

В итоге решил сам свою проблему, вот таким способом.
Код:
Form 1
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainform:=false;
end;

Form 4

procedure showmf;
begin
Form1.Show;
showwindow(Form4.handle, SW_HIDE);
end;

procedure TForm4.FormActivate(Sender: TObject);
begin
  Application.ShowMainform:=false;
Edit1.Text := gH;
if ReadKey = Encode64(Edit1.Text) then
showmf
 else
 ShowMessage('Активируйте программу!');
end;
И вся загвоздка была в этом маленьком кусочке кода.
код ввиде Form1.Hide не подходит, выбивает ошибку, чем и пришлось немного по другому сделать заменив его на Application.ShowMainform:=false;
Максим_83 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде программы по расчёту бесконечной суммы с условием (Delphi) IReapeRI Помощь студентам 2 30.12.2011 09:53
Ошибка в коде программы Delphi Начинающий програм Помощь студентам 5 07.12.2011 23:46
Ошибка в коде программы (Delphi) Начинающий програм Помощь студентам 4 03.12.2011 22:28
ошибка программы dubovik Операционные системы общие вопросы 15 29.01.2011 15:20
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26