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 07-03-2008
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
Leer Const's desde archivo externo

Hola,

Acabo de realizar un pequeño engine mediante el uso de un modulo .pas externo al principal. En este, tengo citadas unas constantes al apartado implementation. Mi objetivo es lograr que el programa me lea el valor de estas constantes desde un archivo exterior al .exe (por ejemplo un .txt).

De este modo conseguiria si conviene actualizar el valor de las constantes sin necesidad de compilar el programa de nuevo. Lo que no me acabo de aclarar es como podria hacer esta lectura exterior.

Alguna revelación?

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 07-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues supongo que con un archivo INI, se podrían cambiar las constantes.
habría que pensar y diseñar el modelo.
Saludos
Responder Con Cita
  #3  
Antiguo 07-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Esto... supongo que con constantes te refieres a variables, ¿no? Porque las constantes no se pueden cambiar, las variables sí.

La idea de Caral de los archivos INI es una buena opción, si no sabes lo que son, aquí tienes información. Para usarlos en Delphi, añade la unidad INIFiles a la uses de tu unidad, y utiliza el tipo TIniFile (mira en la ayuda de Delphi para aprender a usarlos).


Salu2
Responder Con Cita
  #4  
Antiguo 08-03-2008
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
Como comentas ixMike, me referia a constantes, pero que las modificara no desde dentro del programa, sinó desde el archivo exterior para que los usuarios de la aplicación pudieran cambiar el valor sin necesidad de modificar el codigo del programa.

Lo que estoy pensando entonces es que diferencia tendria entre declarar como variables o constantes?

Yo creo que debo declarar como constantes ya que no variaran durante la ejecución del programa, lo que no quiere decir que se pueda modificar las constantes mientras no se ejecute el programa. Voy bien encaminado?

Por cierto, la idea de usar las constantes se trata de calculos con divisas.

Voy a probar esto del INI y os cuento.

Gracias a ambos por vuestra ayuda.
Responder Con Cita
  #5  
Antiguo 08-03-2008
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
Error

Después de leerme el documento de la wiki y la ayuda de Delphi creo que lo tengo ya medio solucionado. He creado en el evento oncreate del Form

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
ini: TInifile;
begin
ini := TIniFile.Create(divisas);
end;

Que me tendria que leer el archivo que se encuentra en el directorio de la aplicación.


En las variables globales he declarado:
var
INI: TIniFile;

Y finalmente en el apartado de const he escrito:moneda: INI.ReadString( 'DIVISAS', 'Nombre', '' );

Que me tendria que leer el valor de Nombre de la sección DIVISAS.

Cuando le doy a compilar me salen una serie de errores que no sé me ocurre como solucionar:
Responder Con Cita
  #6  
Antiguo 08-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Si la variable INI está (que debería estar ahí) en variables globales, después no tendrías que volverla a poner en el OnCreate.

Al cerrar el programa (OnClose u OnDestroy) deberías poner Ini.Free;

En cuanto a lo otro, te equivocas al decir que no varían durante el programa, por varios motivos:

-Sí varían, al leerlos del archivo haces una asignación: moneda:=algo;
-Si declaras esto:
Código Delphi [-]
const
  Moneda = 'Euro';
Después no podrás hacer esto:
Código Delphi [-]
Moneda:='Dólar';

Seguramente ese error que te aparece (y que tendrías que habernos dicho para saber qué te pasaba) es eso, que no puedes asignar un valor a una constante.


Salu2.

Edito: el error que te aparece se debe a que no se puede hacer esto:
Código Delphi [-]
const
moneda = INI.ReadString( 'DIVISAS', 'Nombre', '' );

porque lo de la derecha no es una constante. Y aunque se permitiera, eso se almacena directamente en el ejecutable como un valor, no da cabida a generar objetos ni nada.


Ten en cuenta que una cosa es que algo sea (o deba ser) constante en tu programa, y otra cosa es una constante en prorgramación.

Última edición por ixMike fecha: 10-03-2008 a las 19:13:51.
Responder Con Cita
  #7  
Antiguo 10-03-2008
turminator turminator is offline
Miembro
 
Registrado: abr 2006
Ubicación: Barcelona, Spain
Posts: 91
Poder: 19
turminator Va por buen camino
No se si he entendido bien, pero aprece que lo que quiere hacer es mantener constante el valor de cada divisa. Creo recordar que habia un ejemplo de Manu Cantu similar, para elaborar un conversor de divisas.

En cuanto llego a casa lo subo en breve.
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
Configurar aplicacion con archivo externo voldemmor Varios 1 10-01-2008 21:28:38
leer archivo ini desde aplicacion WEB C#... JuanErasmo .NET 5 16-02-2007 15:33:28
Leer/insertar/modificar datos desde un archivo XML IVAND Varios 1 26-08-2006 23:11:29
Ejecutar un aRchivo Externo desde SQL-server Enan0 SQL 2 23-11-2005 15:45:16
Paneles desde un archivo externo mamaro OOP 1 16-02-2005 17:58:14


La franja horaria es GMT +2. Ahora son las 12:43:00.


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