como posso fazer este calculo no Delphi 000:00:00-00:00:00

Delphi

Firebird

11/08/2016

Bom dia!

Preciso fazer este calculo entre horas.


000:00:00-00:00:00

Esta dando erro dizendo que o formato não esta correto.

O condigo que estou usando é este:

var
x, y, v:real;
begin
x:= StrToFloat(lbHD.caption);
y:= StrToFloat(lbHP.Caption);
v:= x-y;
lbLabel13.Caption:= FloatToStr(v);
end;


no caso lbHD seria a informação em horas que vem assim 000:00:00 e no caso lbHP seria a informação em horas que vem assim 00:00:00.
Rodrigo Carlos

Rodrigo Carlos

Curtidas 0

Respostas

Raylan Zibel

Raylan Zibel

11/08/2016

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   lbl1.Caption := DateTimeToStr(Now);
   lbl2.Caption := DateTimeToStr(Now/0.5);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
   lbl3.Caption := DateTimeToStr(StrToDateTime(lbl1.Caption) - StrToDateTime(lbl2.Caption))
end;

end.
GOSTEI 0
Rodrigo Carlos

Rodrigo Carlos

11/08/2016

Não foi.

Tipo tenho estes dois valores que mudam.

lbHD.Caption = 223:43:00
lbHP.Caption = 60:52:00
lbLabel13.Caption = 223:43:00 - 60:52:00

Eu preciso fazer a subtração destes valores.E demostrar o resultado deles. no entanto por passar de 24h não esta aceitando

Obrigado pela atenção.
GOSTEI 0
Raylan Zibel

Raylan Zibel

11/08/2016

Aí tem que fazer a conta pra transformar as horas de cada uma em blocos de 60 minutos.
GOSTEI 0
Rodrigo Carlos

Rodrigo Carlos

11/08/2016

tá vc sabe fazer, ou teria algum link que tenha é que funcione?
GOSTEI 0
Rodrigo Carlos

Rodrigo Carlos

11/08/2016

Galera, da uma força, por favor.
Só falta este calculo concluir a primeira parte.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

11/08/2016

Veja se este exemplo ajuda:

var
  Hora1, Hora2: String;
  Minutos1, Minutos2: Integer;
begin
  Hora1 := '223:43:00';
  Hora2 := '60:52:00';

  Minutos1 := StrToInt(Copy(Hora1, 1, Pos(':', Hora1) - 1)) +
    StrToInt(Copy(Hora1, Pos(':', Hora1) + 1, 2));

  Minutos2 := StrToInt(Copy(Hora2, 1, Pos(':', Hora2) - 1)) +
    StrToInt(Copy(Hora2, Pos(':', Hora2) + 1, 2));

  ShowMessage(IntToStr(Minutos1 - Minutos2));
end;
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

11/08/2016

Brother, desde a primeira postagem que você postou, eu estou buscando uma alternativa.

Paciência, alguém vai dá uma luz.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

11/08/2016

Veja se ajuda:

{$R *.dfm}

function CopyNext(S: String; Index, Count : Integer) : String;
begin
Result := (S);
Result := Copy(Result, Index, Count);
Result := (Result);
end;

function Subistituir(TextoCompleto,LocalizarTexto,NovoTexto: String ) : String;
begin
Result:=StringReplace(TextoCompleto,LocalizarTexto, NovoTexto, [rfReplaceAll, rfIgnoreCase]);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
Hi,
Hf:string;

VhorasI,
VhorasF,
Result:integer;

begin

Hi:=CopyNext(HoraInicial.Text,1,3);

Hf:=CopyNext(HoraFinal.Text,1,3);
Hi:= Subistituir(Hi,':','');
Hf:= Subistituir(Hf,':','');

VhorasI:=StrToInt(hi);
VhorasF:=StrToInt(hf);

Result:=VhorasF-VhorasI;

Hora_Resultado.Text:=IntToStr(Result);

ShowMessage('Horas Inicial ['+Hi+'] - Horas Inicial ['+hf+'] ='+IntToStr(Result) );

end;


Se a rotina acima não ajudar veja o link abaixo:
Link aqui
GOSTEI 0
POSTAR