Orientação a Objeto dando erro de ponteiro

Delphi

26/03/2013

Olá rapaziada.
criei uma classe pra estudos e estou tentando brincar com ela num form limpo.
porém dá um erro depois de usá-la.

é uma classe de conexão com o banco que por sinal conecta, funciona!
mas depois que continua a execução de objetos do form no evento onclick de um botão
aparece um erro de ponteiro inválido.

Estou deixando a classe e a utilização dela no form pra quem poder me abrir os olhos.
********************************************************************
[ UTILIZAÇÃO ]

procedure Tfprinc.Button1Click(Sender: TObject);
var
conectar: Tconexao;
begin
conectar.cria;
conectar.banco_dados:='D:\FUTTURA\SISTEMASD7\Emaflex\DATA\inttegra.ftt';
conectar.conectar();
conectar.fim;

end;

*********************************************************************
[ CLASSE CRIADA ]

unit Uconexao;

interface
uses SysUtils, IniFiles, Classes, DB, IBCustomDataSet, Dialogs, IBQuery, IBDatabase,
DBClient, Provider, IBScript;


type Tconexao = class
protected
usuario: String;
senha: String;
banco: String;
ib: TIBDatabase;
t: TIBTransaction;
public
constructor cria;
destructor fim;
function conectar : boolean;
property banco_dados : string read banco write banco;
end;

implementation


constructor tconexao.cria;
begin
ib:= TIBDatabase.Create(nil);
t:= TIBTransaction.create(nil);
end;

function tconexao.conectar : boolean;
begin
try
ib.Params.Clear;
ib.DatabaseName:=banco;
ib.SQLDialect:=3;
ib.DefaultTransaction:= t;
ib.Params.Add('user_name=SYSDBA');
ib.Params.Add('password=masterkey');
ib.Params.Add('lc_ctype=none');
ib.IdleTimer := 0;
ib.LoginPrompt:=false;
ib.Connected:=true;
result:= true;
ShowMessage('Conectado a ' + banco );
except
ShowMessage('Erro ao conectar no banco de dados');
result:= false;
end;

end;

destructor tconexao.fim;
begin
t.free;
ib.free;
end;

end.
Adib Valentim

Adib Valentim

Curtidas 0

Respostas

William

William

26/03/2013

Tente assim:

procedure Tfprinc.Button1Click(Sender: TObject);
var
conectar: Tconexao;
begin
  conectar := TConexao.cria();
  conectar.banco_dados:='D:\FUTTURA\SISTEMASD7\Emaflex\DATA\inttegra.ftt';
  conectar.conectar();
  conectar.fim;
end;
GOSTEI 0
Adib Valentim

Adib Valentim

26/03/2013

coisa linda de DEUS.
funcinou!

Nossaaaaaa. que marcada de toco a minha.
Mt obrigado!
GOSTEI 0
William

William

26/03/2013

Tranquilo colega, as vezes acontece essas coisas !!!

Qualquer dúvida estamos por aí ...
GOSTEI 0
José

José

26/03/2013

Entendido que o problema inicial foi solucionado
estou marcando este tópico como resolvido.
GOSTEI 0
POSTAR