Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer Const's desde archivo externo (https://www.clubdelphi.com/foros/showthread.php?t=54068)

dicatek 07-03-2008 23:41:40

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.

Caral 07-03-2008 23:46:35

Hola
Pues supongo que con un archivo INI, se podrían cambiar las constantes.
habría que pensar y diseñar el modelo.
Saludos

ixMike 07-03-2008 23:55:55

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 :)

dicatek 08-03-2008 00:06:22

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.

dicatek 08-03-2008 12:05:54

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:

ixMike 08-03-2008 14:34:12

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.

turminator 10-03-2008 19:01:50

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.


La franja horaria es GMT +2. Ahora son las 03:48:07.

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