Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 20
FelipeDiaz Va por buen camino
Post Uso de los archivos .ini

Muchas gracias a todos los que han respondido, A Delphius, a "Mie..." y a Juanramones.

Vi llas respeustas, saque tiempo para estudiarlas y comprendi el uso de las instrucciones como tal.

Segun comprendi ..es algo asi como un archivo texto o plano (extencion .ini)dodne la informacion de guarda y se organiza por secciones, y de esta misma manerta se debe leer.

Se me vienen ahora dos nuevas inquietudes.

1. Que ventaja tiene esta forma de implementar con archivo .ini el procedimiento que mencione al principio (osea que el usuario cambie en modo ejecucion la BD que quiera trabajar). comparado con el uso de una BD pequeña donde se tenga la misma informacion que estamos guardando en los archivos .ini, algo asi como una BD con las rutas y datos de configuracion..... para el uso de las BD dodne esta la informacion que el intersa al usuario. No seria mas conveniente por cuestiones de seguridad esta forma, dado que el .ini puede ser abierto y alterado facilmente con Notepad.?

2. Agradezco el ejemplo de juanramones... pero me confundo al hacerle seguimiento a la logica.

Segun alcanzo a percibir.... Al abrir el form principal, se extrae del archivo Inicio la linea udl=db1.udl.

Luego (y aqui es doden me pierdo..) se llena un comobobox con la lista de las BD contenida en el archivo Bases.ini y se compara con la la mencionada anteriormente..... y se ordena al Comobobox que muestre esta ultima.

Imagino que aqui actuara el usuario, cambiara la opcion del combobox y grabara al hacer click en el boton.

Quedado la nueva seleccion guardada en inicio.ini.

Mi Inquietud es.... No es en este momento donde se debe ejecutar la conexion con la BD. Porque al parecer en el codigo del FormShow se realiza la conexion con la primera BD que se leyó, sin esperar que el usuario elija alguna.

Bueno tal ves lo entendi mal yo.... pero reitero mi pregunta Numero 1. Este tipo de informacion de rutas de BD, no se podria administrar desde otra BD?

Gracias, y disculpenme en la demora de la retroalimentacion.


Saludos.

FELIPEDIAZ
Responder Con Cita
  #2  
Antiguo 08-07-2007
[juanramones] juanramones is offline
Miembro Premium
 
Registrado: ene 2007
Posts: 6
Poder: 0
juanramones Va por buen camino
Thumbs up Archivos .ini y Selección de Bases de Datos con TADO Controls

Felipe,
estás en lo correcto con que la Conexión debe volver a realizarse cuando el usuario haga click en el Botón y por lo que veo Usted comprendió perfectamente la lógica del código.

La idea del ejemplo es dar una orientación en el manejo del archivo .ini y que lo pudiera luego personalizar de acuerdo con la pregunta realizada.

De igual manera estoy de acuerdo con que es más seguro trabajar con una Base de Datos Pequeña para seleccionar las conexiones a las Bases de Datos en Producción, por cuestiones de seguridad, dado que como lo menciona, cualquiera puede abrir el archivo .ini y conocer donde tiene ubicadas dichas bases de datos.

Pero también creo que si no existe problema con la seguridad, el uso de archivos .ini es mucho más sencillo y funcional dentro de una aplicación.

________________________________________
Con colaboración podemos lograr cosas grandes.
Responder Con Cita
  #3  
Antiguo 08-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Quisiera agregar a lo dicho por juanramones que el empleo de archivos .ini es muy útil cuando se deben obtener datos por default.
Cuando un archivo ini pierde algún dato, o alguna sección es posible restaurar aquellos valores valiendose del tercer parámetro, seteando un valor por defecto.

Además, ante la perdida de un archivo ini, se crea automáticamente. Y podemos aprovechar, como dije antes, este momento para indicar valores por defecto que pueden ser útiles.

De una y otra manera podemos llegar a tener una cierta consistencia de información.

Es cierto que con el block de notas podemos editar el contenido. Pero como dijo juanramones lo que debes mantener con mayor seguridad conviene usar BD, pero para información que facilmente puede ser "recuperable" no vale el ezfuerzo en emplear una base de datos.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 09-07-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 20
FelipeDiaz Va por buen camino
Uso de archivos .ini

Gracias nuevamente juanramones y delphius por la aclaracion... creo que utilizaré los archivos .ini, pues en el fondo creo que no tendre problema con la seguridad, pero queria resolver esa inquietud, asi estoy mas tranquilo.

Bueno me disculpan nuevamente.... quisera confirmar algunas cosas.
1. Cuando juanramones utiliza .. udl=db1.udl, ... ¿ Udl ... Haria las veces de un alias para el usuario y db1.udl se reemplazaria por el nombre del Archivo (*Mdb, en acces por ejemplo) o el directorio ( como en paradox o Firebird) ?
o cuando te refieres a archivos Udl .....son algunos archivos de un tipo ya predefinidos? como por decir *ini o .Jpg o .Xls. En otras palabras no se si utilizaste una palabra por dar ejemplo o concluyo que ignoro (o ignoraba) la existencia de archivos .udl y para que se utilizan.

Bueno, la experiencia que he tenido durante un buen tiempo es desarrollando aplicaciones con delphi y paradox y estoy muy interesado en realizar una mas robusta en Firebird (ya lo he estado comprendiendo), pero esta parte de utilizar .ini no la conocia y mi interes es dar la opcion al usuario de escoger la bases de datos que desee trabajar. A proposito ¿Ven algun inconveniente al implementar esto con firenbird?

2. Algo que solo quiero confirmar.... Cuando tengo por decirlo
ud1=db1.udl
ud2=db2.udl
ud3=db3.udl .. y asi sucesivamente.

Supongamos 6 items, ¿podria concluir...
a. Para agregar un item nuevo, solo utilizo la instruccion de escribir con los neuvos valores sin preocuparme por el orden? es decir el se agrega de ultimo?

b. Esto.. sonara un poco obvio... si por casualidad un usuario piensa crear un nuevo item, pero utiliza una variable ud(cuaqluiera, ejm ud1) que ya ha sido usada ...... simplemente se reescribe..... es decir que solo por codigo tendria yo que controlar el hecho que no altere una ruta pensado crear otra.


3. Esta pregunta es para Delphius, (obtener datos por default).
Cuando dices "ante la perdida de un archivo ini, se crea automáticamente" o "información que facilmente puede ser "recuperable"". No se como interpretarlo, me asaltan inquietudes...
¿Quien se encarga de crear ... o de que forma se crea automaticamente el dato perdido?

Es decir, la aplicacion que desarrolle...dependera de los datos que contiene los archivos .ini para que pueda correr correctamente. es como el indice que el usuario utilizara para trabajar un grupo de informacion (la BD seleccionada).

Si se pierde un dato.. ya sea que alguien abrio el archivo con notepad, y lo borró. o borraron el archivo completo.

Para formular bien la pregunta.... lo haré con un ejemplo (disculpenme si parece algo absurdo)....
Ejmp. Entro al explorador de Windows y busco cuaqluier arcihivo .ini, supongamos que lo borro... le doy eliminar. Luego reinicio el PC. y trato de buscar el archivo..... ¿El archivo aparecerá nuevamente?

O si borro un dato? como identificaría el archivo .ini que se borro a conciencia o que fue un error?

Tal ves desconozco alguna propiedad de los archivos .ini, en la ayuda de delphi hacen enfasis en la froma de maniupularlos desde delphi, no se dodne hay mas tema para compreder esto de la recuperacion..

Por ultimo si me puedes ayudar ya sea con saber donde encuentro mas detalles de estos archivos.

Me da algo de pena seguir preguntando pero cuando dices "es posible restaurar aquellos valores valiendose del tercer parámetro, seteando un valor por defecto"
Que es ese tercer parametro y que es Setear?
(creo que setear es adjudicar un valor auna variable, y no se es como ayuda a conseguir lo anterior )

Bueno, deseo felicitar y agradecer a todos los foristas nuevamente.... si el nivel de atencion y respuesta que he recibido aqui, fuese el que utilizaran las instituciones en general.... el mundo seria diferente.

De verdad muchas gracias... aunque no los conozco personalmente, la ayuda que he recibido de ustedes me motiva a seguir aprendiendo, pues no me siento solo y se que este efecto se multiplica en otros compañeros.

A todos los colaboradores, Mis respetos y admiracion por su don de compartir y ayudar a otros.
Responder Con Cita
  #5  
Antiguo 09-07-2007
[juanramones] juanramones is offline
Miembro Premium
 
Registrado: ene 2007
Posts: 6
Poder: 0
juanramones Va por buen camino
Cool

Para la Primera pregunta:

Cita:
Empezado por FelipeDiaz
1. Cuando juanramones utiliza .. udl=db1.udl, ... ¿ Udl ... Haria las veces de un alias para el usuario y db1.udl se reemplazaria por el nombre del Archivo (*Mdb, en acces por ejemplo) o el directorio ( como en paradox o Firebird) ?
o cuando te refieres a archivos Udl .....son algunos archivos de un tipo ya predefinidos? como por decir *ini o .Jpg o .Xls. En otras palabras no se si utilizaste una palabra por dar ejemplo o concluyo que ignoro (o ignoraba) la existencia de archivos .udl y para que se utilizan.
La respuesta:

Los archivos con extensión .udl son archivos de configuración de Base de Datos (Microsoft Data Link) que se pueden utilizar en los objetos de conexión a BD de Delphi, como TADOConnection, en la propiedad ConnectionString en el Object Inspector aparece la opción al presionar el botón elipsis <...>

Ejemplo de un archivo .udl (podría ser db1.udl)

Código:
[oledb]
; Everything after this line is an OLE DB initstring
Data Source=C:\BD\db.mdb;
Provider=Microsoft.Jet.OLEDB.4.0;
Password="";
User ID=Admin;
Mode=Share Deny None;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
También al darle doble click al archivo .udl, se abre la utilidad de edición del MS. Importante: los archivos .udl inician con una secuencia de caracteres Unicode especial #$FEFF; por lo que en otras secciones del Foro cuando encuentres más descripciones sobre los archivos .udl vas a notar ejemplos con esa cadena al inicio.

En los archivos de ejemplo de Delphi puede encontrar el siguiente:
C:\Program Files\Common Files\System\Ole DB\Data Links\DBDEMOS.udl


En cuanto a lo de los motores de BD que mencionas (Firebird, Paradox, MS Jet), el código inicial está pensado para el MS Jet, pero creo que para los demás sería trabajar con las cadenas de conexión propias o con ODBC.

Para la Segunda pregunta:

Cita:
Empezado por FelipeDiaz

a. Para agregar un item nuevo, solo utilizo la instruccion de escribir con los neuvos valores sin preocuparme por el orden? es decir el se agrega de ultimo?

b. Esto.. sonara un poco obvio... si por casualidad un usuario piensa crear un nuevo item, pero utiliza una variable ud(cuaqluiera, ejm ud1) que ya ha sido usada ...... simplemente se reescribe..... es decir que solo por codigo tendria yo que controlar el hecho que no altere una ruta pensado crear otra.
La respuesta:

a. Si. Para agregar un ítem nuevo basta con la instrucción
Código Delphi [-]
AIniFile.WriteString('Configuracion', 'udl', ComboBox.Items[ComboBox.ItemIndex]);
y se agrega al final de la sección que se esté indicando.

b. Si se reescribe. Ej:
Código Delphi [-]
AIniFile.WriteString('Configuracion', 'VAR1', 'valor 1');
AIniFile.WriteString('Configuracion', 'VAR1', 'valor 2');

El valor de la variable VAR1 en las dos instrucciones del ejemplo quedaría en el último, osea 'valor 2'

________________________________________
Con colaboración podemos lograr cosas grandes.
Responder Con Cita
  #6  
Antiguo 09-07-2007
Avatar de NestorN
NestorN NestorN is offline
Miembro
 
Registrado: ago 2005
Ubicación: Argentina
Posts: 15
Poder: 0
NestorN Va por buen camino
Consulta

Hola, yo tengo una duda son respecto a ini. Tengo una aplicación conectando con un adoconection una DB con Microsof Sql Server. Lo que yo quiero es que al instalar mi aplicación en otra pc mediante ini pueda recuperar el alias de la DB de la otra pc que tenga el sql server.
Si alguien tiene alguna idea Muchas Gracias de ante mano.
Responder Con Cita
  #7  
Antiguo 09-07-2007
[juanramones] juanramones is offline
Miembro Premium
 
Registrado: ene 2007
Posts: 6
Poder: 0
juanramones Va por buen camino
Archivo .ini con SQL Server

Para la Pregunta:
Cita:
Empezado por NestorN
Hola, yo tengo una duda son respecto a ini. Tengo una aplicación conectando con un adoconection una DB con Microsof Sql Server. Lo que yo quiero es que al instalar mi aplicación en otra pc mediante ini pueda recuperar el alias de la DB de la otra pc que tenga el sql server.
Si alguien tiene alguna idea Muchas Gracias de ante mano.
La Respuesta:

Creo que se puede solucionar utilizando una carpeta compartida de solo lectura en el servidor de SQL Server y así compartir o el archivo .ini o el archivo de configuración de la conexión .dsn.

________________________________________
Con colaboración podemos lograr cosas grandes.
Responder Con Cita
  #8  
Antiguo 09-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Cita:
Empezado por FelipeDiaz
3. Esta pregunta es para Delphius, (obtener datos por default).
Cuando dices "ante la perdida de un archivo ini, se crea automáticamente" o "información que facilmente puede ser "recuperable"". No se como interpretarlo, me asaltan inquietudes...
¿Quien se encarga de crear ... o de que forma se crea automaticamente el dato perdido?

Es decir, la aplicacion que desarrolle...dependera de los datos que contiene los archivos .ini para que pueda correr correctamente. es como el indice que el usuario utilizara para trabajar un grupo de informacion (la BD seleccionada).

Si se pierde un dato.. ya sea que alguien abrio el archivo con notepad, y lo borró. o borraron el archivo completo.

Para formular bien la pregunta.... lo haré con un ejemplo (disculpenme si parece algo absurdo)....
Ejmp. Entro al explorador de Windows y busco cuaqluier arcihivo .ini, supongamos que lo borro... le doy eliminar. Luego reinicio el PC. y trato de buscar el archivo..... ¿El archivo aparecerá nuevamente?
Una ventaja que tiene esta clase (TiniFile) es que en forma automática crea dicho archivo en caso de que no exista. Por tanto, cuando se ejecute o se invoque la orden Create() lo que hará es buscar dicho archivo, si falla. Lo crea.
Inicialmente estará vacio, pero es aquí donde entra lo de parametros por defecto.

Cita:
Empezado por FelipeDiaz
Me da algo de pena seguir preguntando pero cuando dices "es posible restaurar aquellos valores valiendose del tercer parámetro, seteando un valor por defecto"
Que es ese tercer parametro y que es Setear?
Como abrás notado, en los eventos ReadXXX y WriteXXX se pasan tres parámetros: El primero la sección, en el segundo la variable a la cual asociar el valor y en el tercero el valor.
El tercer parámetro sirve para el caso eventual de que no exista la variable o la sección. Este parámetro actua como un valor por defecto. Por ejemplo tu haces:

Dato := ini.ReadInteger('UNA SECCION','Una variable',45);

En Dato se colocará el valor asociado a "Una variable". En caso de que la lectura falle, quedará registrado en Dato el valor 45. Y una vez realizado esto, en forma automática (estamos hablando del caso de fallo) la clase creará ya sea la sección y/o la variable con dicho valor por defecto.


Si se emplean los write y read en forma apropiada, se puede conseguir dejar al archivo ini en un estado de "por defecto". Que si bien no es la condición que ha establecido el usuario, se consigue volver al estado inicial de cuando se creo el archivo por primera vez. A esto me refiero cuando dije "facilmente recuperable".

Lo obvio es que el valor por defecto a asignar corresponda a un valor permitido y que pueda ser empleado en forma posterior. Varios sistemas emplean este mecanismo.... inclusive incorporan un botón que dice "Predeterminado" o "Default" que lo que hace es cambiar el valor de algunas o todas la variables por el valor default con el que el sistema inicialmente venía.

Espero que se entienda la idea.

Si quieres saber mas sobre ini, busca en los foros porque el tema se ha tratado en reiteradas oportunidades. Te sugiero también que revises la ayuda que viene con Delphi.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 09-07-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 20
FelipeDiaz Va por buen camino
Smile Archivos .ini

Bueno, creo que ya me siento con orientacion de hacia donde debo seguir.
Gracias nuevamente... espero encontrarlos en un nuevo hilo.

Saludos.
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como utilizar TExcelApplication Jose Roman OOP 17 19-07-2021 15:48:41
¿Debo utilizar un archivo de recurso (.RES)? Jome Varios 2 18-06-2006 08:21:01
como Utilizar una DLL de VB KaTo Varios 0 30-05-2004 19:01:30
Como utilizar un DCR y PAS andrestsas Varios 1 26-10-2003 19:31:58
como utilizar sql plus fcran Oracle 2 10-09-2003 02:44:01


La franja horaria es GMT +2. Ahora son las 13:09:39.


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