• 0
Sign in to follow this  
Matoso

Função Arredondamento DELPHI

Question

Hoje fui migrar para o Delphi XE10 e me deparei com um erro que não estou sabendo resolver!
Essa função foi criada no Delphi 7 e roda normalmente.
Quando fui migrar o projeto todo para Delphi XE10, essa função não foi aceita rs.
Alguém poderia me ajudar?

Gostaria de entender o erro também!!

Obrigado

function ABNTRound(xValor:Extended; Decimals:SmallInt):Extended;
var
   VM : Extended;
   P, F, P2, F2 : Extended;
begin
   VM := Power(10, Decimals);
   P := Int(xValor);
   F := StrToFloat(FloatToStr(Frac(xValor) * VM));
   P2 := Val(Int(F));
   F2 := Val(Frac(F));

   if F2 > 0.5 then
   begin
      P2 := P2 + 1;
   end
   else
   begin
      if  ((10 * Val(F2)) >= 4.9999) and ((10 * Val(F2)) <= 5.0001) then
      begin
         if Frac(P2 / 2) > 0 then
            P2 := P2 + 1;
      end;
   end;

   P2 := P2 / VM;
   Result := P + P2;
end;


[dcc32 Error] uLibrary.pas(5356): E2008 Incompatible types

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Veja sobre o erro

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/cm_comp_types_xml.html&prev=search

   P2 := Val(Int(F));
   F2 := Val(Frac(F));


OBS: o Val no código é variavel ou Procedure do delphi ?

se for variavel não está definida na Function, e é de tipo incompatível

se for procedure, está com a definição incorreta

Delphi syntax:

procedure Val(S; var V; var Code: Integer);

///Exemplo:

uses Dialogs;
var 

  I, Code: Integer;
begin
  { Get text from TEdit control }
  Val(Edit1.Text, I, Code);
  { Error during conversion to integer? }
  if Code <> 0 then
    MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0, mbOk);
  else
    Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));

end;

abraço

 

Share this post


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.

Sign in to follow this