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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Asignar BBDD con archivo .ini

Hola a todos,
utilizo un archivo ini para asignar la bbdd de mi aplicacion para prevenir posibles cambios de ubicacion de esta y así ahorrarme tener que cambiar el codigo.
El problema es que me salta el error "no es un nombre de archivo valido", cuando os puedo asegurar que si lo es.
El codigo para leer la ruta en el ini y asignarla a la bbdd es este
Código:
var
        bbdd:TStringList;
        posicion,posicion2:integer;
        nombreBBDD:string;
begin
bbdd:=TStringList.Create;
bbdd.LoadFromFile('datos/telefonos.ini');
posicion:=pos('[BBDD]',bbdd.Text);
posicion2:=pos('[/BBDD]',bbdd.Text);
nombreBBDD:=copy(bbdd.text,posicion+8,posicion2-posicion-8);
ShowMessage(nombreBBDD);
with DataModule2 do
        begin
        Database.DatabaseName:=nombreBBDD;
        Database.Connected:=true;
        QDepartamento.Active:=true;
        QInformeInterno.Active:=true;
        QPersonal.Active:=true;
        QDepartamentoFax.Active:=true;
        QDepartamentoTelefono.Active:=true;
        QExterno.Active:=true;
        tbExterno.Active:=true;
        end;
Gracias
Responder Con Cita
  #2  
Antiguo 20-11-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Curioso que uses un TString para obtener la información del archivo INI, porque no usas la función que Delphi proporciona para ello.

Código Delphi [-]
uses  IniFiles;
    
with tinifile.create ('ARCHIVO.INI') do begin
    Base := readstring ('BBDD', 'RutaDB', '');
end;

Por otro lado, veo que tienes esto


[BBDD] [/ BBDD]


Eso no me suena que sea un archivo INI.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 20-11-2007 a las 18:47:52.
Responder Con Cita
  #3  
Antiguo 20-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Aunque se usa la clase inifile para atacar los archivos, también puedes hacerlo con TStrings, pero asegúrate de que el archivo tiene la estructura de un .ini

Mira mejor la ayuda de delphi sobre el TStrings, tienes
- Values
- ValuesNames
- etc.
(creo recordar)

Así no tienes que preocuparte de la sección en la que está, sino que cada línea del TStrings estará en la forma:
Código Delphi [-]
Names=Value
Eso se puede cargar / modificar / guardar desde el propio TStrings.

Por otra parte, te aconsejo uses rutas absolutas para indicar nombres de archivo.

En windows el directorio activo puede ser distinto al de tu aplicación, y al intentar leer 'datos\mio.txt' normalmente se va a 'c:\windows\mio.txt' que no existirá.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 20-11-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola molina669

yo realice un proceso para tener los datos de configuración desde un archivo .ini... eso si trabaje con Interbase..

en el Form donde tengo el menu, tengo esto..

el Form Datos corresponde a un datamodule donde tengo la conexión con la base

Código Delphi [-]
procedure TMenu.FormCreate(Sender: TObject);
Var
   Parametro:Tinifile;
begin
   If not DirectoryExists('D:\Sistemas\ProyectoX') Then
      Begin
          {$I-}
           MkDir('D:\Sistemas\ProyectoX');
      End;
     if FileExists('D:\Sistemas\ProyectoX\config.ini') Then
        Begin
             Parametro := TiniFile.Create('D:\Sistemas\ProyectoX\config.ini');
             Datos.IBD_Compras.Connected := False;
             Datos.IBD_Compras.DatabaseName                := Parametro.ReadString('BaseDato','Servidor',' ');
             Datos.IBD_Compras.Params.Values ['user_name'] := Parametro.ReadString('BaseDato','Usuario',' ');
             Datos.IBD_Compras.Params.Values ['password']  := Parametro.ReadString('BaseDato','Clave',' ');
             Datos.IBD_Compras.Connected := True;
             Parametro.Free;
        End
     Else
        Begin
             ShowMessage('Debe Seleccionar Base de Datos para continuar');
             Man_Datos := TMan_Datos.Create(Self);
             Try
                Man_Datos.ShowModal;
// Aqui lo envio a un modulo que hice para ingresar los datos de conexión correspondientes
// En el caso de que no exista el archivo .ini
             Finally
                Man_Datos.Free;
             End;
        End;
end;

si tienes dudas.. me avisas
__________________
BlueSteel

Última edición por BlueSteel fecha: 20-11-2007 a las 20:18:53. Razón: falto descripcion
Responder Con Cita
  #5  
Antiguo 21-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Gracias a todos,
finalmente utilicé el iniFiles y me funciona de maravilla.
Responder Con Cita
Respuesta



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
BBDD Firebird y IIS Dongato3310 Internet 2 20-08-2007 08:13:15
copia de bbdd majosf Conexión con bases de datos 3 18-11-2005 20:49:19
BBDD database.wrk ??? Mulero Conexión con bases de datos 8 03-11-2005 11:24:31
Asignar valor de Campo BLOB a un Archivo de Texto AGAG4 Varios 1 01-10-2004 01:09:04
Que BBDD me recomendais??? seduerey Conexión con bases de datos 4 26-12-2003 22:48:28


La franja horaria es GMT +2. Ahora son las 01:25:53.


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