Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cantidad de veces que se ejecuta una aplicación (https://www.clubdelphi.com/foros/showthread.php?t=37232)

efelix 07-11-2006 15:11:15

Cantidad de veces que se ejecuta una aplicación
 
Hola a todos. Saludos. Soy nuevo en la programación en delphi, estoy trabajado con delphi 7, en una aplicación de bases de datos con Microsoft SQL Server 2000, necesito saber como se puede saber la cantidad de veces que se ejecuta una aplicación. Porque deseo que la primera vez que se ejecute la misma mostrar un formulario solicitando datos que luego los utilizaré para poner como encabezado en todos los informes de la aplicación. Este formulario debe mostrarse solamente una vez, es decir la primera vez que se jecute la aplicación. Muchas Gracias. Disculpen si este tema no es para este foro.

seoane 07-11-2006 15:46:34

La única forma es incrementar la cuenta cada vez que ejecutas un formulario, puedes guardar ese datos en el registro, en un archivo de texto o en alguna base de datos, pero el procedimiento es similar. Aquí te dejo una función que incrementa la cuenta y te devuelve el resultado, en este caso uso el registro de windows:

Código Delphi [-]
uses Registry;

function IncCount: Integer;
begin
  Result:= 1;
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\Software\TuNombre',TRUE) then
    begin
      if ValueExists('Count') then
        Result:= ReadInteger('Count') + 1;
      WriteInteger('Count',Result);
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Solamente llama esta función en la parte del programa donde quieres comprobar el numero de ejecuciones, por ejemplo en el evento OnCreate del formulario principal:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(IntToStr(IncCount));
end;

efelix 09-11-2006 17:01:36

Saludos seonane, muchas gracias por tu respuesta, me sirvió de algo, pero me queda la siguiente duda, imaginate que haces una aplicación, que creas un instalador para la misma, que es para comercializarla, con esta solución de escribir en el registro de windows según la función que me diste, cuando se reinstale el sistema operativo se pierde la efectividad de la misma, mi pregunta es la siguiente como puedo evitar que esto suceda, es decir evitar que se modifique el registro. Disculpa la molestia y muchas gracias por tu explicación.

seoane 09-11-2006 17:23:55

Eso depende de lo que quieras conseguir. Me explico, si lo que quieres evitar es que se tengan que volver a introducir los datos de configuración podrías generar un archivo con una copia de los datos de configuración, archivo que tu cliente debería de guardar en lugar seguro (un Cd, otro disco) y tu programa debería dar la opción la primera vez que se ejecuta de introducir los datos de nuevo o utilizar la copia guardada.

Ahora bien, si lo que quieres es crear una especie de "demo" que se ejecute un numero de veces limitado, pues no puedes hacer nada. Si tu programa esta en un Cd por ejemplo, y el disco duro es formateado, es imposible saber si tu aplicación ya ha sido ejecutada. Esa información tienen que guardarse en alguna parte. Incluso podríamos pensar en distribuir nuestra aplicación en un disco o memoria usb y modificar el contenido de este al ejecutar nuestra aplicación, pero nada impediría que el "cliente" hiciera una copia del disco antes de empezar a instalar el software.

Yo solo veo dos soluciones, usar una llave hardware (busca en google, las hay a muy buen precio), o si el cliente dispone de conexión a Internet hacer que nuestra aplicación pida permiso para ejecutarse a través de Internet. De esta forma podríamos controlar, cuando, como y cuantas veces se ejecuta la demo.


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

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