Orientação a Objeto dando erro de ponteiro

26/03/2013

0

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

Responder

Posts

26/03/2013

William

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;
Responder

26/03/2013

Adib Valentim

coisa linda de DEUS.
funcinou!

Nossaaaaaa. que marcada de toco a minha.
Mt obrigado!
Responder

27/03/2013

William

Tranquilo colega, as vezes acontece essas coisas !!!

Qualquer dúvida estamos por aí ...
Responder

06/04/2013

José

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar