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 24-10-2005
developerManu developerManu is offline
Registrado
 
Registrado: oct 2005
Posts: 5
Poder: 0
developerManu Va por buen camino
Rellenar un ComboBox a partir de un archivo config.ini

Buenas,
Tengo un archivo de configuración como el siguiente (config.ini): (ejemplo)
[CONEXIONES]
T1=192.192.192.192::5900
T2=192.192.192.192::5915

Lo que quiero conseguir es que al crear el formulario (onCreate), se me generé automaticamente el TComboBox. Los datos de combo los sacará del archivo de configuración, pero solamente quiero el primer elemento de cada linia del archivo de configuración, es decir, T1, T2,... etc.

Y luego que al pulsar sobre T1, o T2, genere una conexión remota, que en el archivo de configuración es lo que hay detrás del "=", es decir:IP::PUERTO

Normalmente, programo en PHP, y HTML. En html el combobox tiene 2 propiedades, una que son los textos que quiere que aparezca en el combobox, y otra el valor que tiene cada elemento del combo, es decir: T1 (texto del combo) y 192.192.192.192::5900 (valor del primer elemento del combo)

No se si en delphi están estas 2 propiedades. He encontrado el items (que son los elementos del combo), pero donde puedo guardar sus valores. No se si se puede hacer?

Sino se puede hacer, lo que se me ha ocurrido es tener 2 combo, uno de los cuales estará oculto: el que contendrá los valores. Y dependiendo del elemento seleccionado del combo1 cogeré (hare la conexión) con el elemento del combo2.

Entonces para hacer esto, como puedo separar cada elemento del archivo de configuracion?

Para leer el archivo utilizo:
Fichero := TStringList.Create();
Fichero.LoadFromFile(Tecnicos);

Donde tecnicos es la url del archivo, y luego con Fichero.Strings[i] consigo la linea entera apuntada por 'i', y lo guardo en una varibale cadena. Por lo tanto, en cadena tendría por ejemplo : cadena := "T1=192.192.192.192::5900".

Ahora necesitaria separarlo en 2 (texto,valor), y para ello utilizo método Delimiter, pero no funciona, alguien me puede ayudar?

PD: No se si me he explicado, espero que si.

Muchas gracias por todo,
Un saludo.
Responder Con Cita
  #2  
Antiguo 24-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
La forma más simple de hacerlo es así:

Código Delphi [-]
var ini:Tinifile;
begin
  ini := Tinifile.Create('c:\miarchivo.ini');
  try 
    ini.ReadSection('CONEXIONES', combobox1.items);
  finally 
     ini.free;
  end;
end;

Con eso cargas los T1, T2, etc.

Cuando haces clic en un elemento del combo, abres el ini y lees con:
Código Delphi [-]
DireccionIpEnString:= ini.ReadStrings('CONEXIONES', 
           combobox1.items[combobox.itemindex],  // el T1, T2 etc.
           'sin direccion asignada');

Si realmente quieres tener el par de valores cargados en el combo para evitar tener que acceder al .ini, entonces mira la ayuda de TStringList.AddObject. Aqui se complica un poquito más la cosa, ya que tendrás que crear un objeto y asociarlo a cada T1.

Ten en cuenta que TStringList deriva de TStrings, por tanto, se puede guardar un objeto por cada elemento que se muestra en el combobox.

Una vez que decidas qué método te gusta más, ya nos preguntarás.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 24-10-2005
developerManu developerManu is offline
Registrado
 
Registrado: oct 2005
Posts: 5
Poder: 0
developerManu Va por buen camino
Muchísimas gracias,

AL final lo hago con un archivo ini, y voy leyendo según me convenga de ese archivo.

Una última cosa, se os ocurre alguna idea, para que no sea tan fácil de modificar el archivo ini. (que sólo se pueda modificar cuando sea necesario, por ejemplo porque se han cambiado las conexiones)?

Me explico, cambiando este archivo ini concretamente las [CONEXIONES], mi aplicación funcionaría sin ningún problema y la gente lo podría utilizar para ellos mismos.

Por ejemplo : SAT 01=192.192.192.192:5900, si cambias esta conexion por otra, el programa funciona sin problemas, y en lugar de conectarse a esa IP se conectaria a la nueva.

Estoy pensando de hacer un apartado version:
[VERSION]
ver=5.12

Y que este numero sea una operación matematica de haber sumado todas las conexiones(una vez pasado a ASCII caracter a caracter), y cogieno la parte entera.

Que os parece la idea? hay alguna forma más facil de implementarlo?

Un saludo,
Y otra vez, muchísimas gracias, no sabía que había un clase que trataba los archivos de configuraicion (*.ini).

PD: Hacia mas de 3 años que no programaba en Delphi, porque me había dedicado a la programación web (PHP+mysql,HTML...etc), ya empiezo a recordar porque me gustaba tanto esta herramienta de desarrollo.
Responder Con Cita
  #4  
Antiguo 24-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por developerManu
Una última cosa, se os ocurre alguna idea, para que no sea tan fácil de modificar el archivo ini.
Si te refieres a lo que creo, tal vez pudieras cifrar/descifrar el archivo cuando te fuera menester.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 24-10-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
No se si en delphi están estas 2 propiedades
La propiedad Items (y cualquier desendiente de TStrings) se puede dividir en dos TStrings:Names y Values separados por defecto por el "=" aunque se puede cambiar el simbolo separador por la propiedad NameValueSeparator (a partir de Delphi7), asi q puedes cargar extraer solo las partes de la derecha (Names) o de la izquierda (Values) ..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 25-10-2005
developerManu developerManu is offline
Registrado
 
Registrado: oct 2005
Posts: 5
Poder: 0
developerManu Va por buen camino
Buenos días,

Ayer conseguir encriptarlo/desencriptarlo a mi gusto y funciona perfectamente.
Ahora voy a intentar hacer que se pueda bajar este archivo de configuración desde un FTP, como un "actualizar". En el FTP tendré siempre la ultima versión del config.ini, y cuando se cambie, intentaré que salga algún mensaje como "Hay una nueva versión", o algo parecido. Ya os contaré si me sale.

Sobre lo que comentas Delfino, lo intentaré tambien, porque esa es la idea que tenía al principio.

Sino me sale ya os iré pididendo ayuda.

Un saludo,
Y muchisimas gracias por todo.
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


La franja horaria es GMT +2. Ahora son las 21:53:04.


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