Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 11-12-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por bucanero Ver Mensaje
hola,
En cuanto a las DLLs como te ha comentado Casimiro, estando en las carpetas de windows debería de cogerlas sin problemas, otra opción es dejar dichas DLLs en la misma carpeta que el ejecutable y en ninguno de estos casos usar la opción LibraryLocation del componente, salvo que quieras usar otra localización distinta de estas dos (las opciones por defecto).

Para el tema de la configuración por parte del usuario es muy recomendable que marques la opción DesingConnection a true, esta opción te permite mantener la conexión activa en tiempo de diseño pero no conecta automáticamente al crear el componente, esto es necesario si la configuración de diseño va a ser distinta que la configuración en ejecución.

Y aquí te dejo un ejemplo de como puedes hacer para que el usuario pueda configurar la conexión y guardar y recuperar dicha configuración:


Código Delphi [-]
uses dialogs, Forms, Vcl.Controls, inifiles, unit2;

{$R *.dfm}


{ TDataModule3 }
function TDMConnection.ConfigurarDBConnection: Boolean;
var
  FormConfig:TFormDBConfig;
begin
  /// Aqui se muestra un Form con los campos de la conexion, para que el usuario
  /// los pueda modificar y despues guardar dicha configuracion en un fichero INI
  FormConfig:=TFormDBConfig.create(application);
  try
    FormConfig.showModal;
    Result:=(FormConfig.modalResult=mrOk);
  finally
    FormConfig.free
  end;
  if result then
    SaveDBConfig;
end;

procedure TDMConnection.DataModuleDestroy(Sender: TObject);
begin
  ZConnection1.Disconnect;
end;

function TDMConnection.DBConectar: Boolean;

var
  intento:LongInt;
begin
  intento:=0;
  if loadDBConfig then
    repeat
      try
        ZConnection1.Connect;
      except
        // Error en el proceso de conexion
        On E:Exception do
          MessageDlg(E.message, mtError, [mbOK], 0);
      end;
      inc(intento);
      /// se sale:
      ///   si se ha conectado correctamente,
      ///   si se ha intentando conectar 3 o mas veces sin exito
      ///   o si no se ha conseguido conectar y se ha cancelado la ventana de configuración
    until ZConnection1.Connected or (intento>=3) or not ConfigurarDBConnection;
end;

function TDMConnection.loadDBConfig: Boolean;
var
  ConfigFile:TIniFile;
  ASection:String;
begin
  Result:=False;
  ConfigFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
  try
    with ZConnection1 do begin
      ASection:=ZConnection1.Name;
      Database := ConfigFile.ReadString(ASection, 'database', database);
      Catalog := DataBase;
      HostName := ConfigFile.ReadString(ASection, 'HostName', HostName);
      Port := ConfigFile.ReadInteger(ASection, 'Port', Port);
      protocol := ConfigFile.ReadString(ASection, 'protocol', protocol);
      LibraryLocation:= ConfigFile.ReadString(ASection, 'LibraryLocation', LibraryLocation);
      /// Para el Usuario/password es conveniente aplicar algun algoritmo de codificacion/descodificacion
      User := ConfigFile.ReadString(ASection, 'User', User);
      password := ConfigFile.ReadString(ASection, 'password', password);
      Result:=true;
    end;
  finally
    ConfigFile.Free;
  end;
end;

function TDMConnection.SaveDBConfig: Boolean;
var
  ConfigFile:TIniFile;
  ASection:String;
begin
  Result:=False;
  ConfigFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
  try
    with ZConnection1 do begin
      ASection:=ZConnection1.Name;
      ConfigFile.WriteString(ASection, 'database', database);
      ConfigFile.WriteString(ASection, 'HostName', HostName);
      ConfigFile.WriteInteger(ASection, 'Port', Port);
      ConfigFile.WriteString(ASection, 'protocol', protocol);
      ConfigFile.WriteString(ASection, 'LibraryLocation', LibraryLocation);
      /// Para el Usuario/password es conveniente aplicar algun algoritmo de codificacion/descodificacion
      ConfigFile.WriteString(ASection, 'User', User);
      ConfigFile.WriteString(ASection, 'password', password);
      Result:=true;
    end;
  finally
    ConfigFile.Free;
  end;
end;


Y para usarlo solo es necesario poner

Código Delphi [-]

  if not DMConnection.DBConectar then begin
    MessageDlg('No ha sido posible conectarse a la BBDD', mtError, [mbOK], 0);
    exit;
  end;
  MessageDlg('Conexion OK', mtInformation, [mbOK], 0)

Importante en ZEOS guardar también los campos protocol y port (protocolo y puerto) son los que indican el sistema de base de datos que se va utilizar, y que DLLs va a necesitar para conectar, (ZEOS permite conectar a múltiples motores de bases de datos)

Un saludo
Primero que nada muchas gracias por tomarte el tiempo de explicarme, en ese caso si es que entiendo el ejemplo, estaria abriend ola configuracion en un formulario en el caso de que al abrir la aplicacion no conecte el momento de abrir?

Código Delphi [-]
begin   Result:=False;   ConfigFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'))
En cuanto al comentario en el que recomendas algun tipo de codificacion cuales serian los usados normalmente, desconozco los metodos de ofuscacion de codigo, y los hash md5 de "one way" estan totalmente descartados para algo asi
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manual relación Maestro-Detalle con Zeos y Firebird rrf Conexión con bases de datos 8 18-05-2011 17:38:37
Configuracion: Paleta de componentes gastelumri Varios 2 19-02-2008 16:24:05
Manual configuracion ASP.NET con IIS HombreSigma .NET 3 22-10-2005 17:17:13
Componentes... no se guarda configuración BlueSteel Varios 1 22-06-2005 01:00:07
Hay un manual de zeos 6.x... Arturo MySQL 0 22-10-2004 23:50:17


La franja horaria es GMT +2. Ahora son las 23:17:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi