Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) subtração apenas do ano atual do sistema por ano variável digitado no edit


Visitante

Pergunta

Olá  amigos, precisando de uma ajuda, um código para fazer uma subtração entre dois anos (somente o ano), o atual do sistema (sem ter de ser digitado)e outra variável digitado pela pessoa no Edit1, e mostrar a diferença no Label1


Supondo que seja 2018 o ano atual (do computador)     

e no Edit1   [ 1958 ]


label1 = 60


Obrigado

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Amigo, se voce digitar somente o ano no edit, basta fazer a conversão de string para numero e uma subtração e de depois converter novamente de numero para string

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Edit1.Text = 2018
   // Edit2.Text = 1958
   // Edit3.Text = 60
   Edit3.Text := inttostr(strtoint(Edit1.Text) - strtoint(Edit2.Text));
end;

se quiser usar 2 componentes DateTimePicker

uses DateUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   // DateTimePicker1.Date = 19/ 8 /2018
   // DateTimePicker2.Date = 18/ 8 /1958
   // Edit1.Text = 60
   Edit1.Text :=  FloatToStr(YearsBetween(DateTimePicker1.Date, DateTimePicker2.Date));
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo bem Jhonas, obrigado pela sua ajuda, estava testando aqui usando a função NOW que pega a data do sistema e deu certo e tirei uma foto, só que não sei se vai dar problema na hora do programa  copiar o ano se o computador da pessoa tiver usando outro formato (máscara) sem ser este dd/mm/aaaa

 tem como mudar este código  pra ficar mais seguro , se for preciso

 


procedure TForm1.Button1Click(Sender: TObject);
 var
   a:TDateTime;
   b:String;
   c:Integer;
   d:String;
begin
    a:=now;   //data atual dd/mm/aaaa  do sistema
    b:= DateToStr(a) ;
    c:= StrToInt(copy (b, 6,4));   //aqui que acho que pode dar problema na hora de copiar se usar outra máscara
    d:= IntToStr(c - StrToInt(Edit1.Text)); //diferença entre o ano atual do computador e o ano digitado

 
    Label1.Caption:=DateToStr(a)+ '   data atual do sistema';
    Label2.Caption:=(b)+ '   data atual do sistema convertido para string';
    Label3.Caption:=IntToStr(c) +'   Pegando somente o ano da string';
    Label4.Caption:=(d); //diferença
end;

 

Obrigado e boa semana pra todos ai

 

44444.jpg

Link para o comentário
Compartilhar em outros sites

  • 0

 tem como mudar este código  pra ficar mais seguro , se for preciso  ?

Tem varias maneiras ... estou colocando a mais simples, que é pegar somente o ano da data atual ( seja qual for o formato )

procedure TForm1.Button1Click(Sender: TObject);
var
    a:integer;
begin
    a:= YearOf(now());   //data atual dd/mm/aaaa  do sistema
    a:= a - StrToInt(Edit1.Text); //diferença entre o ano atual do computador e o ano digitado

    Label1.Caption:= DateToStr(now)+ '   data atual do sistema';
    Label2.Caption:= inttostr(a); //diferença

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, ficou  muito bom mesmo

só vou fazer um lembrete pros iniciantes que nem eu,  que é necessário declarar no uses:  DateUtils 

 

muito obrigado, a você e a todos amigos do fórum

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...