Diminuir uma data de outra e o resultado um valor integer
ola.
estou com um pequeno problema, preciso fazer uma calculo entre duas datas e o resultado ser um valor inteiro.
tentativa 1
tbpagtoDifDias.Value :=
tbpagtoVencimento.Value -
tbpagtoPagto.Value ;
tentativa 2
procedure
var venc, pagto, difdias : integer;
begin
venc := StrToInt(DbEdit1.Text);
Pagto := StrToInt(DbEdit2.Text);
difdias := venc - pagto;
DbEdit3.Text := StrToint(Resp)
end;[b:12b4c332d1][/b:12b4c332d1][b:12b4c332d1][/b:12b4c332d1]
[b:12b4c332d1][color=red:12b4c332d1]Editado(Beppe): Título em maiusculas. Leia as regras de conduta.[/color:12b4c332d1][/b:12b4c332d1]
estou com um pequeno problema, preciso fazer uma calculo entre duas datas e o resultado ser um valor inteiro.
tentativa 1
tbpagtoDifDias.Value :=
tbpagtoVencimento.Value -
tbpagtoPagto.Value ;
tentativa 2
procedure
var venc, pagto, difdias : integer;
begin
venc := StrToInt(DbEdit1.Text);
Pagto := StrToInt(DbEdit2.Text);
difdias := venc - pagto;
DbEdit3.Text := StrToint(Resp)
end;[b:12b4c332d1][/b:12b4c332d1][b:12b4c332d1][/b:12b4c332d1]
[b:12b4c332d1][color=red:12b4c332d1]Editado(Beppe): Título em maiusculas. Leia as regras de conduta.[/color:12b4c332d1][/b:12b4c332d1]
Airtao
Curtidas 0
Respostas
Fabio.hc
06/02/2004
Tente assim:
procedure TForm1.Button1Click(Sender: TObject); var venc, Pagto: Tdate; difdias :double; begin venc:=StrToDate(Edit1.Text); Pagto:=StrToDate(Edit2.Text); difdias :=(venc - Pagto); Label1.Caption:=FloatToStr(difdias); end;
GOSTEI 0
Ltres
06/02/2004
Ou utilize o DaysBetween, ele retorna um inteiro com a diferença de dias entre duas datas.
Lembre-se de colocar o DateUtils no Uses
uses DateUtils; procedure TForm1.Button1Click(Sender: TObject); var data_de, data_ate: TDate; begin data_ate := Date; data_de := StrToDate(´01/01/2004´); ShowMessage(IntToStr(DaysBetween(data_ate, data_de))); end;
Lembre-se de colocar o DateUtils no Uses
GOSTEI 0
Ana Davis
06/02/2004
Também estou com o mesmo problema do airtao. Só que encontro o problema no resultado...usando a daysbetween, o valor retornado é enorme....
exemplo: estou usando o intervalo (04/06/1952) - (24/-5/1952) isso me retornaria 12 dias.
Como a daysbetween estou recebendo como resultado o valor 36514...já mudei pra double e trunquei....estou usando inteiro para receber o resultado....mas não sei pq isso acontece.
Essas datas eu recebo a maior do edit e a outra eu encontro atraves do um select da minha tabela.
exemplo: estou usando o intervalo (04/06/1952) - (24/-5/1952) isso me retornaria 12 dias.
Como a daysbetween estou recebendo como resultado o valor 36514...já mudei pra double e trunquei....estou usando inteiro para receber o resultado....mas não sei pq isso acontece.
Essas datas eu recebo a maior do edit e a outra eu encontro atraves do um select da minha tabela.
GOSTEI 0
Ltres
06/02/2004
Ola Ana Davis.
Realmente impressionante... Pelos testes q fiz aqui naum da erro nenhum! De uma nova olhada no codigo e veja se tem algo errado, ou poste aqui o codigo.
Realmente impressionante... Pelos testes q fiz aqui naum da erro nenhum! De uma nova olhada no codigo e veja se tem algo errado, ou poste aqui o codigo.
GOSTEI 0
Adilsond
06/02/2004
Sendo tbpagtoDifDias é um integer:
tbpagtoDifDias.Value := Trunc(tbpagtoVencimento.Value - tbpagtoPagto.Value);
tbpagtoDifDias.Value := Trunc(tbpagtoVencimento.Value - tbpagtoPagto.Value);
GOSTEI 0
Adilsond
06/02/2004
Sendo tbpagtoDifDias um integer:
tbpagtoDifDias.Value := Trunc(tbpagtoVencimento.Value - tbpagtoPagto.Value);
Se o resultado for 0, o pagamento foi efetuado na data do vencimento;
Se o resultado for Positivo, o pagamento foi efetuado antes do vencimento;
Se o resultado for Negativo, o pagamento foi efetuado depois do vencimento;
GOSTEI 0