Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 06 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
116 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Conexão ao Interbase e Firebird via ZeoLib
Publicado por Olifile : Quarta, Maio 03, 2006 - 03:24 GMT-3 (5765 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Olá caros amigos e programadores, escreverei aqui um pequeno artigo sobre a conexão das bases de dados Firebired ou Interbase. Para isso usarei o Delphi 2005 e o componente zeolib. Esta ligação será efetuada graças a um mini-programa que ira guardar a localização da base de dados e o domínio do computador local ou em rede no registro do windows. Caso seja local, o domínio será “localhost”, caso seja em rede será o nome ou ip do computador remoto (Recomendo vivamente o uso do ip).
  1. Vamos então iniciar a concepção do programa que ira guardar nos registros do Windows
    1. Abrir um projeto novo.
    2. Introduza os seguintes componentes:
      • 4 Edits
      • 4 Labels
      • 3 Buttons
      • 2 SpeedButtons
      • 2 OpenDialogs
      • 2 RadioButtons (não obrigatórios)

      O essencial é renomear dois dos 4 edits:

      Edit1 - Edit1 (colocar a propriedade Visible para False)
      Edit2 - Edit2
      Edit3 - EdtHost (será para a introdução do domínio)
      Edit4 - EdtDB (será para a introdução do caminho da base de dados)

      Redimensione os dois SpeedButton para Height=22 e Width=23. A aparência e parte do funcionamento você pode ver nas figuras abaixo:





      Nota: OpenDialog1 será usado para localizar o arquivo da base de dados, o qual será guardado o caminho para a mesmo no registro do Windows. O OpenDialog2 será usado para localizar o executável da nossa aplicação, para podermos retirar o nome do software que será usado na criação de uma chave dentro de registro do Windows.

      Vamos passar para os códigos:

      • No evento OnClick do SpeedButton1, vamos colocar este código:

        if OpenDialog1.Execute then
        begin
        EdtDB.Text := OpenDialog1.FileName;
        end;

      • No evento OnClick do SpeedButton2, vamos colocar este código:

        if OpenDialog2.Execute then
        begin
          Edit2.Text := ExtractFileName(OpenDialog2.FileName);
        end;

      • Ambos os códigos fazem abrir uma caixa de diálogo onde o usuário irá localizar o arquivo (no primeiro, a base de dados, no segundo, o executável). Caso o usuário abra algum arquivo, pegamos o caminho deste e o colocamos na nossa Edit.

      • No Button1, no evento OnClick, vamos colocar este código:

        EdtDB.Text := '';
        EdtHost.Text := '';

        Para limpar os Edits.

      • No Button2, no evento OnClick, vamos colocar este código, que será o mais importante, pois será esse que vai analisar o estado dos campos e salvar os dados no registro.


        procedure TForm2.Btn_aplicarClick(Sender: TObject);
        var REG : TRegistry;
        begin
            //entrada dos dados nos registros de dados do windows
            if Not ((EdtDB.Text = '') or (Edit2.Text = '') or (EdtHost.Text = '') or (Edit1.Text = '')) then
             begin
              Try
              REG := TRegistry.Create;
              REG.RootKey := HKEY_LOCAL_MACHINE;
              IF REG.OpenKey('SOFTWARE\Microsoft\Windows\Desyscom\'+copy(Edit2.Text,1,(length(Edit2.Text)-4))+'\', True) THEN
                Begin
                   REG.WriteString('DB_address', EdtDB.Text);
                   REG.WriteString('HostName', EdtHost.Text);
                   REG.WriteString('type_network', Edit1.Text);
             REG.WriteString(‘namesoft’, Edit2.Text);
                end;
              finally
              REG.Free;
              end;
              MessageBeep(70);
              MessageDlg('Os seu dados foram registrados com sucesso!',mtConfirmation,[mbOK],0);
              Halt;
              Application.Terminate;
             end
            else
              begin
                MessageDlg(‘Deve-se preencher os campos em branco!',mtWarning,[mbOK],0);
              end;
        end;

        Obs: terá que incluir as units Registry e ShellApi no uses: (Uses Registry, ShellApi) .

        Este código verifica inicialmente se os campos estão preenchidos, caso não esteja mostra uma mensagem de erro: «Deve-se preencher os campos em branco!». Depois inicia o salvamento dos dados. Inicia por criar na memória o registo, determinar qual o rootkey (neste caso HKEY_LOCAL_MACHINE). Verifica se a chave já existe e caso exista, guarda os dados, caso não exista cria a chave dentro do registo e então guarda os dados. Finaliza liberando o objeto REG da classe TRegistry da memória. « REG.Free ;».

      • E por fim no button3 coloque o seguinte código.

        Application.Terminate;

        Para fechar a aplicação :D

    3. No segundo passo será colocar no seu projeto um código para que possa ir buscar os dados relativos à base de dados ao registro. Dentro do seu projeto devera conter um form ou data module onde se inclui o componente de ligação à base de dados. Nesse form ou data module, no evento OnCreate, teremos o seguinte código:


      procedure TDataModule1.DataModuleCreate(Sender: TObject);
      var
      HN, endereco, softname : string;
      REG : TRegistry;
      begin
        Try
            Try
            REG := TRegistry.Create;
            REG.RootKey := HKEY_LOCAL_MACHINE;
            IF REG.OpenKey(SOFTWARE\Microsoft\Windows\Desyscom\{o}\', True) THEN
              Begin
                   REG.WriteString('Ultima_Entrada', DateTimeToStr(Now));
                  HN := REG.ReadString('HostName');
                  endereco := REG.ReadString('DB_Address');
                  type_network := REG.ReadString('type_network');
      softname := REG.ReadString(' namesoft ');
              end;
            finally
            REG.Free;
            end;
            if HN = '' then
              begin
                MessageDlg('Erro na Ligação, abra novamento o configurador da base de dados',mtInformation,[mbOK],0);
                Halt;
                Application.Terminate;
              end
            else
              begin
                Ligacao_BD.HostName := '';
                Ligacao_BD.HostName := HN;
                Ligacao_BD.Database := endereco;
                Ligacao_BD.Connect;
        Except
          MessageDlg('Erro na Ligação, abra novamente o configurador da base de dados',mtInformation,[mbOK],0);
            Halt;
          Application.Terminate;
        end;
      end;

      Nota: no meu caso usei um data module.

      Penso que não exista qualquer dúvida, mas passo a explicar no geral: é criado na memória a extensão para acessar ao registro do Windows. É definido então o rootkey. Em seguida, lê-se os valores para as variáveis e finaliza liberando da memória. Associamos as variáveis ao componente de ligação à base de dados e pronto! Esta o problema resolvido.

    Clique aqui para fazer download do exemplo.

João Filipe Rodrigues Oliveira.
Oliveira de Azeméis - Portugal
Contato: geral@atleta-digital.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados