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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.03.2015, 09:28
AlexAwert AlexAwert вне форума
Прохожий
 
Регистрация: 20.03.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Здравствуйте!
Скажу сразу, я только начинаю разбираться в Delphi.
Загвоздка в том, что не могу придумать как загрузить данные из БД в массив. Видел на форуме такую же тему с решением, но она мне не совсем подходит (или я просто не понимаю еще как его реализовать).
У меня есть простая форма авторизации в приложении. Необходимо реализовать ее функционал с помощью класса и БД.

Ниже листинг класса и формы авторизации


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2, Unit4, Unit5, DB, ADODB, Grids, DBGrids;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    Button2: TButton;
    Label3: TLabel;

    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
   Form1: TForm1;
   log:string;
   pas:string;
   Login:string;
   Password:string;
   LoP:TlistLogPas;
implementation

{$R *.dfm}




procedure TForm1.FormCreate(Sender: TObject);
var j:integer;
begin
   LoP.Create;
   form1.ADOQuery1.SQL.Clear;
   form1.ADOQuery1.SQL.Text:='SELECT * FROM UserName ;';                                    // БД с двумя полями Login и Password  
   form1.ADOQuery1.Active:=True;
   form1.ADOQuery1.Open;
   log:='admin';
   pas:='12345';

   SetLength(LoP.List,Form1.AdoQuery1.RecordCount);
    while not Form1.AdoQuery1.Eof
    do begin
    Lop.List[j] := lop.AddUser(TUser.Create(Form1.AdoQuery1.Fields[0].AsString,Form1.AdoQuery1.Fields[1].AsString));   // как-то очень криво попытался заполнить массив
    Form1.AdoQuery1.Next;

    end;

end;



{procedure TForm1.Button1Click(Sender: TObject);

begin
   Login:=AnsiLowerCase(edit1.Text);
   Password:=edit2.Text;
   If (Login = log) and (Password = pas) then begin
   form2.Show;
   form1.hide;
   end
   else ShowMessage('Íåâåðíûé ëîãèí èëè ïàðîëü')

end;}





procedure TForm1.Edit2Change(Sender: TObject);

begin
   edit2.PasswordChar:='*';

end;
end.


-----------------------------------------------------------------------------
Юнит с классом

unit Unit5;

interface
Uses Unit4, Dialogs;

type

   TlistLogPas = class
   List:array of TUser;
   size: integer;
   ListCount: Integer;
   Constructor Create();
   Procedure AddUser(Aur:TUser);
   Function FindUser(Fur1,Fur2:String):string;

end;


implementation

constructor TlistLogPas.Create();

begin
   size := 1;
   setLength(List, size);
   ListCount := 0;
end;

procedure TListLogPas.AddUser(Aur:TUser);
   begin
     if ListCount >= size-1 then
     begin
     size := 2*size;
     setLength(List, size);
     end;
     List[ListCount] := Aur;
     ListCount := ListCount + 1;
end;

Function TlistLogPas.FindUser(Fur1,Fur2:String):string;
   var i: integer;
   begin
   result:='';
      for i := 0 to ListCount - 1 do
      begin
      if (List[i].Login = Fur1) and (List[i].Password = Fur2) then
          begin
          Result:='1';
          break;
          end
          else ShowMessage('Ëîãèí èëè ïàðîëü ââåäåí íå âåðíî');
      end;
   end;

end.




На любые вопросы по коду отвечу. Просто не знаю где еще какие комментарии дописать.


Помогите пожалуйста разобраться новичку

unit Unit4;

interface

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

type

   TUser = class
   Login: String;
   Password: String;

   Constructor Create(NewLogin,NewPassword:string);

end;

implementation

constructor TUser.Create(NewLogin, NewPassword: string);

begin
   Login:=NewLogin;
   Password:=NewPassword;
end;

end.
MAD: учимся пользоваться тегами!

Последний раз редактировалось M.A.D.M.A.N., 20.03.2015 в 15:55.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter