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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2011, 20:51   #1
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
Печаль Запись в реестр.

Всем приветики ребята. Вот сделала запись в реестр кода. Но вот одна проблемка окно регистрации выскакивает каждый раз когда запускаю программу, а мне нужно как-то проверять если был введен код то окно регистрации не должно повторно появлятся.
Вот код пожалйста ребят как его изменить или дайте исходник где подробно очень на конкретном примере показано.


Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

type
  TMainForm = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure LoadProgParam;
 //   procedure SaveProgParam;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;
   Regini:TReginifile;
implementation

uses Unit3;

{$R *.dfm}


procedure TMainForm.Button1Click(Sender: TObject);
var
Regini:TReginiFile;
begin
Regini:=TRegIniFile.Create('TextReader') ;
Regini.RootKey:=HKEY_CURRENT_USER;
Regini.OpenKey('Params', true);
Regini.WriteString('KeyGen', 'Reader', Edit1.Text);
Regini.Free;
Button1.Enabled:=False;
Button2.Enabled:=True;
end;

procedure TMainForm.Button2Click(Sender: TObject);
begin
if Edit1.Text='POVTIAS-Y742-4KURS' then  begin
form3.Show;
MainForm.Visible:=false; end
else     begin
ShowMessage('Неверный серийный номер');
Button1.Enabled:=True;
end;
end;


procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//SaveProgParam;
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
LoadProgParam;
end;

procedure TMainForm.LoadProgParam;
var
Regini: TReginiFile;
S:String;
begin
Edit1.Clear;
Regini:= TReginiFile.Create('TextReader');
Regini.OpenKey('Params', true);
S:=RegIni.ReadString('KeyGen','Reader','POVTIAS-Y742-4KURS');
Regini.Free;
Button2.Enabled:=False;
end;

end.
Кристинка89 вне форума Ответить с цитированием
Старый 09.02.2011, 21:04   #2
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
По умолчанию

Да уж... Пожалуй мне легче будет все с нуля написать, чем править этот код. Не могли бы Вы поточнее сформулировать задачу вашей программы?

P.S. Не советую Вам так яро выставлять свою принадлежность к "слабому" полу, вряд-ли из-за этого больше людей откликнутся. Да и такие посты нередко попадают в "Шедевры" форума.
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
niki2012 вне форума Ответить с цитированием
Старый 09.02.2011, 21:23   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

В показанном коде нет никакого куска, который делаёт (цитирую)

Цитата:
окно регистрации выскакивает каждый раз когда запускаю программу
Так что либо ты врёшь, либо показывай весь код.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 09.02.2011, 21:46   #4
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
По умолчанию

Я примерно понимаю что что-то должно происходить только при первом запуске программы, и походу это какая-то регистрация.
Код:
var 
  reg: TRegistry;
  firstRun: boolean;
begin
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  reg.OpenKey('Путь к разделу реестра', true);
  if reg.ValueExists('Имя записи') then firstRun:=false else firstRun:=true;
  reg.CloseKey;
  reg.Destroy;
  if firstRun=true then 
  begin
    высвечиваем чего-то; 
    reg.WriteString('Имя записи'); 
  end;
  reg.CloseKey;
  reg.Destroy;
end;
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.

Последний раз редактировалось niki2012; 09.02.2011 в 21:49.
niki2012 вне форума Ответить с цитированием
Старый 09.02.2011, 22:06   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TMainForm.FormShow(Sender: TObject);
begin
LoadProgParam;
end;
замени лучше на FormCreat, FormShow может много раз за работу программы происходить
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Так что либо ты врёшь, либо показывай весь код.
ладно мне, но a девушке)
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 22:23   #6
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

надо играться с 2мя формами. 1я будет проверять наличие некого параметра в реестре, если есть он то просто не показывать главную форму (у меня она та что с логином и паролем ну типа регистрация) и загружать 2ю форму. вот код главной формы (не смущайтесь что она у меня Form2):
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Registry;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  B : Boolean;

implementation
uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
REG : TRegistry;
begin

if (Edit1.Text = 'test')and (Edit2.text = 'test') then begin

REG := TRegistry.Create;
REG.RootKey:=HKEY_LOCAL_MACHINE;
REG.OpenKey('Software\Test',true);
REG.WriteBool('Test1',true);
REG.CloseKey;
REG.Destroy;

Form1.Show;
Form2.Hide;
end
else
showmessage('неверный логин и пароль попробуйте test и test )))');
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.Close;
end;

procedure TForm2.FormCreate(Sender: TObject); //считывание параметров с реестра
var
REG : TRegistry;
begin
REG := TRegistry.Create;
REG.RootKey:=HKEY_LOCAL_MACHINE;
if REG.OpenKey('Software\Test',false) then begin
if REG.ValueExists('Test1') then begin
B:=REG.ReadBool('Test1');
REG.CloseKey;
REG.Destroy;
end;
end;
if B=true then begin
Application.Showmainform:=false;

end;

end;

end.
вот код 1й формы (которую запускает или нет основная форма). она будет закрывать главную при закрытии т.к. главная невидимая будет.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Registry;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if Unit2.B = true  then
Form1.Show;
end;

end.
и код проекта
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm1, Form1);
  Application.Run;


end.
и собственно исходник всего этого барахла http://zalil.ru/30482013
компилятор delphi 2007
wm_leviathan вне форума Ответить с цитированием
Старый 09.02.2011, 23:36   #7
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
По умолчанию

Всем спасибо ребята. Мне так и нужно было
Кристинка89 вне форума Ответить с цитированием
Старый 09.02.2011, 23:38   #8
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
По умолчанию

Только вот вы забыли сделать так чтобы при закрытии Form1 программа закрывалась, сдели чтобы форма закрывалась а form2 открытая. Но это я сама исправлю, мелочи
Кристинка89 вне форума Ответить с цитированием
Старый 10.02.2011, 11:40   #9
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от Кристинка89 Посмотреть сообщение
Только вот вы забыли сделать так чтобы при закрытии Form1 программа закрывалась, сдели чтобы форма закрывалась а form2 открытая. Но это я сама исправлю, мелочи
там же все это есть при закрытии Form1 идет закрытие Form2(который невидимый для нас)
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Close;
end;
по крайней мере процесс Project1 выгружается из диспетчера
wm_leviathan вне форума Ответить с цитированием
Старый 10.02.2011, 15:50   #10
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
По умолчанию

Да да я поняла. Незаметила сразу пардон :-)
Кристинка89 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в реестр zotox Win Api 7 31.10.2010 21:36
Запись в реестр arxidevill Общие вопросы Delphi 4 13.05.2010 00:29
Запись в реестр без прав администратора =LeonZone= Win Api 12 07.03.2010 19:06
Запись программы в реестр Sparky Паскаль, Turbo Pascal, PascalABC.NET 1 28.10.2009 13:03
Как реализовать запись hex в реестр? Ant1Player Общие вопросы Delphi 18 07.07.2009 20:25