Показать сообщение отдельно
  #1  
Старый 06.11.2010, 10:32
efimalex efimalex вне форума
Прохожий
 
Регистрация: 06.11.2010
Сообщения: 7
Репутация: 10
По умолчанию Delphi 2009 свой класс подключения

есть такой класс для подключения к Firebird.

Код:
unit DatabaseConnUnit;

interface
uses
SysUtils,FIBDatabase, pFIBDatabase,Classes;
Type
  TDatadaseConnect = class(TObject)
    Private // закрытая часть
      path: String;
      uname: String;
      upass: String;
      urole: String;
      db: TpFIBDatabase;
    Protected // Защищенная часть
      Procedure Setdbpath(Val: String); 
      Procedure SetUser(Val: String);
      Procedure SetPassword(Val: String);
      Procedure SetRole(Val: String);
      Procedure SetDatabase(Val: TpFIBDatabase);
    Public 
      Constructor Create(DataBase: TpFIBDatabase; dbpath:String; name:String; pass:String; role:String);
      Destructor Destroy;
      Property DataBase: TpFIBDatabase write SetDatabase;
      Property dbpath: String write Setdbpath;
      Property username: String write SetUser;
      Property Password: String write SetPassword;
      Property Role: String write SetRole;
      function  Login:boolean;
end;

implementation

constructor TDatadaseConnect.Create(DataBase: TpFIBDatabase;dbpath:String; name:String; pass:String; role:String);
begin
SetDatabase(DataBase);
SetUser(name);
Setdbpath(dbpath);
SetPassword(pass);
SetRole(role);
end;

destructor TDatadaseConnect.Destroy;
begin
//db.Connected:=false;
  inherited;
end;

function TDatadaseConnect.Login: boolean;
begin
if db.Connected then db.Connected := False;
  with db.ConnectParams do begin
    UserName := uname;
    Password := upass;
    RoleName := urole;
  end;
  db.DBName  := path;
  try db.Connected := True;
  except
    on e: Exception do
      //ShowMessage(e.Message);
  end;
  Result := db.Connected;
end;

procedure TDatadaseConnect.SetDatabase(Val: TpFIBDatabase);
begin
db:=Val;
end;

procedure TDatadaseConnect.Setdbpath(Val: String);
begin
path:=Val;
end;

procedure TDatadaseConnect.SetPassword(Val: String);
begin
upass:=Val;
end;

procedure TDatadaseConnect.SetRole(Val: String);
begin
urole:=Val;
end;

procedure TDatadaseConnect.SetUser(Val: String);
begin
uname:=Val;
end;
end.

вот тут его использую
Код:
procedure TLogForm.Button1Click(Sender: TObject);
var
c:TDatadaseConnect;
begin
c.Create(dm.Database,'c:\TMProm\bd\TMPROM.FDB','SYSDBA','masterkey','');
if c.Login then
  begin
    dm.SetGroupNomen.Active:=true;
    mainform.Show;
    close;
  end
  else
  application.Terminate;
end;

то работает, то нет
вот ошибка

Access violationat address 0040452E in module..
Что не правильно в классе?
Ответить с цитированием