Ver Mensaje Individual
  #8  
Antiguo 16-09-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
A continuación te dejo un ejemplo MUY simple, pero que hace lo que necesitas.
Como verás, es un formulario llamado FMMain con tres TEdits y un TTimer.
* El TTimer (TUnSegundo) está puesto a 1000ms para que actualice el formulario cada 1 segundo.
* Los TEdits muestran los datos transformando las variables privadas TDateTime a string.
* Los datos se guardan en un archivo llamado ControlTiempo.ini que estará en el directorio Windows que corresponda según la versión de Windows instalada. Si quieres puedes ponerle una ruta fija o buscar la ruta de la aplicación.


Código Delphi [-]
unit UFMMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TFMMain = class(TForm)
    ETiempoContratado: TEdit;
    ETiempoConsumido: TEdit;
    ETiempoConexion: TEdit;
    TUnSegundo: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure TUnSegundoTimer(Sender: TObject);
  private
    { Private declarations }
    InicioConexion, TiempoConsumidoAlIniciarAplicacion : TDateTime;
    TiempoConexion, TiempoConsumido,TiempoContratado : TDateTime;
    procedure ActualizaDatos;
  public
    { Public declarations }
  end;

var
  FMMain: TFMMain;

implementation

{$R *.dfm}

uses IniFiles;

procedure TFMMain.ActualizaDatos;
begin
  // Calculo el tiempo de conexion
  TiempoConexion := Now - InicioConexion;
  TiempoConsumido := TiempoConsumidoAlIniciarAplicacion + TiempoConexion;

  // Actualizo el formulario
  ETiempoContratado.Text := TimeToStr(TiempoContratado);
  ETiempoConsumido.Text := TimeToStr(TiempoConsumido);
  ETiempoConexion.Text := TimeToStr(TiempoConexion);

  // Si el tiempo contratado se ha consumido cierro la aplciacion
  if (TiempoContratado < TiempoConsumido) then
     Close;
end;

procedure TFMMain.FormCreate(Sender: TObject);
var
  Ini : TIniFile;
begin
  // Hora de inicio de la conexion
  InicioConexion := Now;

  // Lee datos guardados
  Ini := TIniFile.Create('ControlTiempo.ini');
  try
     TiempoContratado := StrToTime(Ini.ReadString('Datos', 'TiempoContratado', '00:00:00'));
     TiempoConsumidoAlIniciarAplicacion := StrToTime(Ini.ReadString('Datos', 'TiempoConsumido', '00:00:00'));
  finally
     Ini.Free;
  end;

  ActualizaDatos;

  // Inicio el Timer
  TUnSegundo.Enabled := True;
end;

procedure TFMMain.TUnSegundoTimer(Sender: TObject);
var
  Ini : TIniFile;
begin
  ActualizaDatos;

  // Actualizo el tiempo consumido
  Ini := TIniFile.Create('ControlTiempo.ini');
  try
     Ini.WriteString('Datos', 'TiempoConsumido', TimeToStr(TiempoConsumido));
  finally
     Ini.Free;
  end;
end;

end.
Responder Con Cita