Jump to content
Fórum Script Brasil
  • 0

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


Guest

Question

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 to post
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148863
    • Total Posts
      644886
×
×
  • Create New...