Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez? (https://www.clubdelphi.com/foros/showthread.php?t=23571)

nuri 21-07-2005 13:27:59

¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez?
 
Hola de nuevo.
¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez?.
Es que deseo que cuando se abra mi programa por primera vez se inserte una ruta donde guardar los archivos que se incluyen en la base de datos, tales como imágenes.
Sólo deseo que esto se de una vez y no cada vez que se abra la aplicación, ¿esto se puede hacer?.
Muchas Gracias a quien pueda ayudarme.;)
Atentamente
Nuri.

dec 21-07-2005 13:44:21

Hola,

Se me ocurre que hagas uso del registro de Windows. Cuando inicies tu aplicación compruebas si existe determinado valor o determinada clave: si existe es que no es la primera vez que tu aplicación se inicia. ¿Porqué?

Pues porque si la clave o el valor de marras no existe lo crearás en ese momento y en sucesivos inicios de tu aplicación dicha clave o dicho valor existirá, lo que te indicará que tu aplicación ya se inició previamente.

zurech 21-07-2005 13:45:15

Si no quieres tocar el registro casi es mejor que hagas lo mismo pero utilizando un archivo, que creas al iniciar por primera vez

dec 21-07-2005 13:49:15

Hola,

Cita:

Empezado por zurech
Si no quieres tocar el registro casi es mejor que hagas lo mismo pero utilizando un archivo (...)

¿Porqué es mejor utilizar un archivo que no el registro de Windows? Tengo entendido que es la propia Microsoft la que, a partir de Windows 3.1 ó 95 recomienda usar el Registro de Windows en lugar de archivos Ini, por poner un ejemplo.

nuri 21-07-2005 13:51:59

Gracias por las respuestas.
Lo siento, pero es que estoy un poco perdida, ¿cómo puedo crear un archivo la primera vez que inicio mi programa?, ¿desde la aplicación lo puedo hacer? si es así desde qué evento?.
Muchas gracias de nuevo.
Atentamente
Nuri

dec 21-07-2005 14:18:33

Hola,

A ver qué puede decirte esta "cosa" que me ha salido a bote pronto:

Código Delphi [-]
 unit UfrmPrincipal;
 
 interface
 
 uses
   Windows, Forms, SysUtils,
   Classes, Registry, Dialogs;
 
 type
   TfrmPrincipal = class(TForm)
     procedure FormCreate(Sender: TObject);
   private
     function PrimerInicio(usarRegistro: boolean) : boolean;
   public
   end;
 
 var
   frmPrincipal: TfrmPrincipal;
 
 implementation
 
 {$R *.dfm}
 
 resourcestring
   rsClaveInicio   = 'SOFTWARE\Tu programa\Inicio';
   rsArchivoInicio = 'inicio';
 
 procedure TfrmPrincipal.FormCreate(Sender: TObject);
 begin
   if PrimerInicio(false) then
   begin
     ShowMessage('Es el primer inicio del programa');
     {...}
   end
   else
   begin
     ShowMessage('NO es el primer inicio del programa');
     {...}
   end;
 end;
 
 function TfrmPrincipal.PrimerInicio(usarRegistro: boolean) : boolean;
 var
   dir: string;
   reg: TRegistry;
 begin
   if usarRegistro then
   begin
     reg := TRegistry.Create;
     try
       with reg do begin
         RootKey := HKEY_CURRENT_USER;
         Result := not KeyExists(rsClaveInicio);
         if Result then CreateKey(rsClaveInicio);
       end;
     finally
       reg.Free;
     end;
   end
   else
   begin
     dir := ExtractFilePath(ParamStr(0));
     Result := not FileExists(dir + rsArchivoInicio);
     if Result then TFileStream.Create(dir + rsArchivoInicio, fmCreate);
   end;
 end;
 
 end.

vtdeleon 21-07-2005 14:52:50

Saludos

Una Curiosidad, Si PrimerInicio(false) le asignas falso nunca entrara a
Código Delphi [-]
 var
     dir: string;
     reg: TRegistry;
   begin
     if usarRegistro then
     begin
       reg := TRegistry.Create;
       try
         with reg do begin
           RootKey := HKEY_CURRENT_USER;
           Result := not KeyExists(rsClaveInicio);
           if Result then CreateKey(rsClaveInicio);
         end;
       finally
         reg.Free;
       end;
     end
O veo mal:confused:

dec 21-07-2005 15:07:51

Hola,

No; no ves mal vtdeleon. No entrará a lo que dices, pero para eso está lo que sigue... o sea:

Código Delphi [-]
 else // usarRegistro = false;
 begin
   dir := ExtractFilePath(ParamStr(0));
   Result := not FileExists(dir + rsArchivoInicio);
   if Result then TFileStream.Create(dir + rsArchivoInicio, fmCreate);
 end;


La franja horaria es GMT +2. Ahora son las 21:12:05.

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