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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2014, 10:51   #1
rAMEO
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 45
По умолчанию Подскажите пожалуйста (dll)

привет всем!!! у меня есть форма1 (авторизация пользователей) все работает, а как все это в dll Осуществить то есть создать длл с ниже указаноми процедурами и прошу показать пример, очень надеюсь на Вас, заране спасибо большое
не хотелос все это в Form1 писать а просто с dll вызевать

Код:
unit Form1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls, ExtCtrls, Buttons, jpeg, XPMan, ComCtrls;

type
  TForm1= class(TForm)
    XPManifest1: TXPManifest;
    Timer1: TTimer;
    GroupBox1: TGroupBox;
    XPManifest2: TXPManifest;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ProgressBar1: TProgressBar;
    Label3: TLabel;
    Image1: TImage;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Flash_f: TFlash_f;
       vub_vodu:byte;
       vub_pilg:byte;
       nastr:byte;
implementation

uses UDM, Form2;

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
// закрити форму
Application.Terminate;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var k: boolean;
begin
     DM.Login.Active:=True;
  DM.Login.First;
  k:= false;
    while not DM.Login.Eof do begin
    if DM.Login.FieldByName('Логін').Value=Edit1.Text then
      if DM.Login.FieldByName('Пароль').Value=Edit2.Text then begin
        k:=true;
       if DM.Login.FieldByName('права').Value='user' then
         form1.N21.Visible:=false;
        if DM.Login.FieldByName('права').Value='admin' then
          form1.N21.Visible:=true;
      end;
    DM.Login.Next;
  end;
  if k then begin
    Timer1.Enabled:=True;
    ProgressBar1.Visible:=True;Label3.Visible:=true;
    With ProgressBar1 do
    Begin Position:=Position+1;
   if Position<>Max Then Label3.Caption:='Выполняется загрузка БД...' else
   begin
   
   Label3.Caption:='База данных загружено! Нажмите кнопку Вход';
   Form1.Hide;
   Form2.show;
    end;end;
 end
  else ShowMessage('Неверные данные! обратитес к администратору');

end;





procedure TTForm1.Timer1Timer(Sender: TObject);
begin
Label3.Visible:=True;
ProgressBar1.Visible:=True;
With ProgressBar1 do
Begin
Position:=Position+1;
if Position=Max Then Label3.Caption:='База данных загружено! Нажмите кнопку Вход';
end;
Label3.Font.Color:=clBlue;

end;

end.

Последний раз редактировалось Stilet; 18.12.2014 в 11:03.
rAMEO вне форума Ответить с цитированием
Старый 18.12.2014, 11:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты умеешь создавать форму динамически?
Если нет то DLL тебе еще ранно использовать, и в данном случае бессмысленно.
Однако чтоб не быть голословным, я все же примерный набросок дам:
Код:
library project21;

{$mode objfpc}{$H+}

uses  unit1,//модуль с классом формы
  Classes
  { you can add units after this };
var f:TForm1;  //Переменка формы

  procedure showme;   //Показываем форму
  begin
    f.show();
  end;

finalization
 f.close;  //После выгрузки DLL форму освобождаем
 f.free;
begin
  f:=TForm1.create(nil); //При загрузке Либы создаем форму для работы
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2014, 15:32   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

можно авторизацию вынести в файл проекта, или в датамодуле динамически вызывать форму
не нужно и даже вредно держать формы автосоздаваемыми
в проекте по хорошему должен создаваться 1 датамодуль и 1 форма, а остальное динамически
Код:
program ReadRDU;

uses
  Forms, ...;

{$R *.res}
                              
begin
  Application.Initialize;
  Application.CreateForm(TDataModule, DataModule);
  LoginForm:=TLoginForm.Create(nil);
  try
    if LoginForm.ShowModal<>idok then Abort;
    if not DataModule.Connection.Connected then Abort;
  finally
    LoginForm.Free;
  end;
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.
а еще не правильно искать в SQL базе перебором... а пароли хранить в открытом виде, обычно их хешут

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Q:TAdoQuery;
begin
  Q:=TAdoQuery.Create(nil);
  try
    Q.Connection:= DataModule.Connection;
    Q.SQL.Text:='SELECT права FROM Login WHERE Логін= :Логін and Пароль= :Пароль;'
    Q.Parameters[0].Value:=Edit1.Text;
    Q.Parameters[1].Value:=Edit2.Text;
    Q.Open;
    if Q.RecordCount=0 then Abort;
    form1.N21.Visible:= (Q.FieldByName('права').Value='admin')
  finally
    Q.Free;
  end;
end;
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 18.12.2014 в 16:04.
Slym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите пожалуйста pinch000 Общие вопросы C/C++ 1 15.11.2009 00:10
Подскажите простую литературу о dll fs444 Общие вопросы C/C++ 1 17.09.2009 12:23
Подскажите, пожалуйста grandge Помощь студентам 0 01.05.2009 16:03
Подскажите пожалуйста Dimanw92 Паскаль, Turbo Pascal, PascalABC.NET 2 24.09.2008 22:51