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 29-07-2005
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Lightbulb Leer *.Ini desde la Unidad de proyecto (*.dpr))

Hey puedo leer un archivo ini desde cualquier unidad de mi proyecto pero yo quiero obtener algunos datos desde mi unidad de proyecto, como hago para leer un valor del ini desde ahi. Yo lo intente asi:
Código:
program SCLClientePro;

uses
  Forms,
  Utime in 'Utime.pas' {Foprincipal}, Inifiles;

var config:Tinifiles;
    x:boolean;dir:string;

{$R *.RES}

begin
  Application.Initialize;
  dir:=extractfiledir(application.ExeName);
  Config:=Tinifile.Create(dir+'\Configuracion.ini');
  x:=Config.Readbool ('VENTANA INICIO','VALOR',FALSE);
  if x then
  begin
    Foinicio:=TFoinicio.Create(application);
    if foinicio.ShowModal<>1 then
       Application.Terminate;
    foinicio.Free;
  end; //if
  config.Free;
  Application.CreateForm(TFoprincipal, Foprincipal);
  Application.Run;
end.
pero no funciono me dice "Undeclared identifier Tinifiles" seguro es porque la unidad "Inifiles" esta mal referenciada pero no se donde mas colocarla. Bueno si es que se puede hacer desde aqui lo del ini. Q me falta o q tengo mal. Gelmin Martinez (Nicaragua).
__________________
Powered by Gel
Responder Con Cita
  #2  
Antiguo 29-07-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,

Incluye la unidad "IniFiles" en la cláusula "Uses".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 29-07-2005
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Thumbs down ya la inclui en la clausula Uses

Ya la inclui en la clausula Uses, si ves vien el codigo ahi esta.
Código:
uses
  Forms,
  Utime in 'Utime.pas' {Foprincipal}, Inifiles;
tambien ya lo intente asi
uses
Inifiles,
Forms,
Utime in 'Utime.pas' {Foprincipal};
[/code]
y nada.
__________________
Powered by Gel
Responder Con Cita
  #4  
Antiguo 29-07-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,

Disculpa, llevas razón, no me había fijado lo suficiente en el código. Acaso halla influido en mi ceguera el que no utilizases las etiquetas "DELPHI" sino las etiquetas "CODE". Pero bueno, fuera como fuera, ahí estaba la unidad "IniFiles".

Dos cosas me extrañan: haciendo pruebas no encuentro problemas para leer un archivo "ini" ni tampoco para escribir en el mismo. Por otro lado me extraña que puedas usar la función "ExtractFileDir"... puesto que (si he visto bien) no incluyes la unidad "SysUtils" en donde está declarada...

Por otro lado encuentro en el código ciertas instrucciones un tanto confusas... por ejemplo:

Código Delphi [-]
     if foinicio.ShowModal<>1 then
       Application.Terminate;
Ahora mismo no recuerdo si es posible que "ShowModal" devuelva "1", pero, en todo caso, un "Application.Terminate" ahí, ¿no dejaría el resto de instrucciones sin ejecutarse? Me refiero sobre todo a las encargadas de liberar recursos, como "Config.Free".

No lo sé. De cualquier modo, ya digo, no encuentro problemas para leer y escribir de y en un archivo "ini" desde el archivo de proyecto, o sea, desde el archivo "dpr"... ¿Todavía sigues sin poder hacerlo o quizás ya diste con el problema?
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 29-07-2005 a las 03:18:13. Razón: (corrección del texto)
Responder Con Cita
  #5  
Antiguo 29-07-2005
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Exclamation ok estoy haciendo pruebas.

Ok tiense razon en algunas cosas lo que pasa es que estoy haciendo pruebas con ese codigo y nada mas queria saber si se podia leer el ini desde ahi. y no he depurado bien el codigo ese.
postea como lo harias tu en el *.dpr con un ejemplo sencillo me interesa ver donde pones las units extras q utilizara el proyecto en *.dpr

Ese codigo me esta dando errores por todo lo que mencionastes anteriormente no mas estoy probando. y lo del codigo de delphi pues no se como insertar aqui codigo delphi me disculpas si me dijeras como seria bueno.
Código:
if foinicio.ShowModal<>1 then
      Application.Terminate;
Pues yo si he utilizado el showmodal para verificar algunos valores de retorno atraves del "Modalresult" y eso me sirve cuando tengo en la ventana dos botones "Aceptar" y "Cancelar" si el usuario da en aceptar "Modalresult=1" si no es que dio en cancelar y por lo tanto el modalresult del formulario es diferente de 1 y hay que terminar la aplicacion mas o menos para eso lo utilizo pero bueno ese no es el tema de este post. sigamos con lo del ini mejor.
__________________
Powered by Gel
Responder Con Cita
  #6  
Antiguo 29-07-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,

Respecto de las etiquetas para incluir código Delphi estas son [ DELPHI ] y [ /DELPHI ] (sin los espacios en blanco). Como usuario registrado que eres puedes editar tus mensajes: lo digo por si quieres cambiar el código fuente de más arriba para incluirlo dentro de las oportunas etiquetas.

Por otro lado echa un vistazo al archivo adjunto a ver qué te parece la solución que daría yo al asunto que nos ocupa, no obstante guardarme la posibilidad de realizar algún que otro cambio siempre que se considerase oportuno.

Cita:
Empezado por Gelmin
Pues yo si he utilizado el showmodal para verificar algunos valores de retorno atraves del "Modalresult" (...)
Sí; efectivamente se utiliza y puede usarse también como lo haces:

Código Delphi [-]
 if ShowModal = 1 then
   {...}
Sin embargo, estarás conmigo en que es bastante más intuitivo y sencillo leer:

Código Delphi [-]
 if ShowModal = mrOK then
   {...}
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (3,1 KB, 42 visitas)
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 29-07-2005 a las 03:16:37. Razón: (ampliación del texto)
Responder Con Cita
  #7  
Antiguo 29-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo dejaría tranquilo el archivo .dpr y haría las comprobaciones en el OnCreate de Foprincipal.

Si acaso procede, puedes usar Application.ShowMainForm := false; para ocultar la ventana principal y validar las opciones.

Application.Initialize;
Application.Run;

Junto con Application.Terminate, puede producir efectos colaterales, que, en principio, son dificiles de localizar.

No debe haber problemas en crear Foprincipal, y justo en el Oncreate, verificar el archivo ini, y usar Application.Terminate allí mismo.

Código Delphi [-]
program SCLClientePro;

uses
  Forms,
  Utime in 'Utime.pas' {Foprincipal};

{$R *.RES}

begin
  Application.Initialize;
  Application.ShowMainForm:= false;
  Application.CreateForm(TFoprincipal, Foprincipal);
  Application.Run;
end.
Como digo, en el Oncreate de Foprincipal, decides si continuar o terminar la aplicación.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 29-07-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,

Es posible que lo terminara dejando en el archivo "dpr", pero, también es probable que al cabo hiciera lo mismo que Lepe, o sea, hacer lo propio aprovechando el evento "OnCreate" del formulario principal de la aplicación.

Sin embargo, y, si es por lo engorroso que puede quedar el archivo "dpr", creo que el asunto podría reducirse (en dicho archivo "dpr") a un par de instrucciones, y dejar el resto de instrucciones, variables y recursos en otro u otros módulos/unidades aparte.

De todos modos, ya digo, creo que al cabo probablemente me decantaría por hacer algo similar a lo que Lepe propone.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 29-07-2005
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Thumbs up Gracias por el ejemplo

Ok. esta muy bueno el ejemplo q colocastes Dec, agradezco tu valioso tiempo. Ya lo probe y funciona perfecto, ya descubri tambien cuales eran mis errores en el código q publiqué y además aprendí algo q no habia utilizado y q tu utilizas en tu ejemplo resourcestring, La solución que propone Lepe, tambien ya la habia pensado, tambien funciona lo q pasa es que yo queria que lo de las opciones del *.ini se obtubieran lo mas antes posibles, es decir antes de crear o hacer cualquier otra cosa dentro de mi aplicación y además queria probar si este tipo de cosas (Leer *.ini) se podian hacer directamente desde *.dpr que ya veo que si se puede.

Y bueno ahora si ya se como publicar código delphi, desde ahora lo hare con esas etiquetas descuiden. Saludos muchos seguimos en contacto. Gelmin Martínez (Nicaragua).
__________________
Powered by Gel
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 13:25:21.


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