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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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..
Что не правильно в классе?
Ответить с цитированием
  #2  
Старый 06.11.2010, 12:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

TDatadaseConnect
1. Это не опечатка?
2. Вы описали db: TpFIBDatabase, а создаете где? По логике в вашем констукторе надо писать, что-то типа:
Код:
db := TpFIBDatabase.Create(Self);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

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

Да скорее всего в этом и проблема. Спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter