Re: [fpc-pascal] Hint converting to int64

2018-09-12 Thread Martok
Am 11.09.2018 um 12:11 schrieb Santiago A.:
> -- var  Entity:Longword;FullParagraph:string; pIni:Integer; begin
>  Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint  end;
> ---

Compiling with -vp shows that the result of the subtraction is a signed Longint.
That makes this an expression mixing Longword and Longint, which is always
computed in Int64 and because of that causes this hint.

The thing I'm missing is the "Mixing signed expressions and longwords gives a
64bit result" hint. Is that because something detects that this was an internal
typeconvn?

-- 
Regards,
Martok

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Hint converting to int64

2018-09-11 Thread Mark Morgan Lloyd

On 11/09/18 16:15, Santiago A. wrote:
El 11/09/18 a las 12:30, Mark Morgan Lloyd escribió:> On 11/09/18 10:15, 
Santiago A. wrote:>> Hello:FPC: 3.0.4 (Realease from Lazarus 1.8.4 SVN: 
57972)OS: Windows7 >> 32bits / Linux 64Bits>> I have this code and I get 
a hint>> -- var  Entity:Longword;FullParagraph:string; 
pIni:Integer; >> begin  
Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== >> Hint  end; 
--->> Hint: Converting the operands to "Int64" before doing the 
add could >> prevent overflow errors.I can't see why it mentions int64, 
there are >> integer and longword variables, but no Int64 one.>> There 
is you know.>> 
https://www.freepascal.org/docs-html/current/ref/refsu4.html#x26-250003.1.1 
 >


--var   Entity:Longword;   FullParagraph:string;   
pIni:Integer;begin      
Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint   end; 
  ---Do you mean that Entity is promoted to int64 in a 32bits 
system?


The operands Entity*10 and 10+ord(FullParagraph[pIni])-48 are both 32 
bits, but the addition could overflow. The compiler writer's trying to 
be nice to you, quit kvetching :-)


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Hint converting to int64

2018-09-11 Thread Santiago A.

El 11/09/18 a las 12:30, Mark Morgan Lloyd escribió:

On 11/09/18 10:15, Santiago A. wrote:
Hello:FPC: 3.0.4 (Realease from Lazarus 1.8.4 SVN: 57972)OS: Windows7 
32bits / Linux 64Bits

I have this code and I get a hint
-- var  Entity:Longword;FullParagraph:string; pIni:Integer; 
begin  Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== 
Hint  end; ---
Hint: Converting the operands to "Int64" before doing the add could 
prevent overflow errors.I can't see why it mentions int64, there are 
integer and longword variables, but no Int64 one.


There is you know.

https://www.freepascal.org/docs-html/current/ref/refsu4.html#x26-250003.1.1 




--
var
  Entity:Longword;
  FullParagraph:string;
  pIni:Integer;
begin
  
  Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint
  
end;
 ---
Do you mean that Entity is promoted to int64 in a 32bits system?


--
Saludos

Santiago A.

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Hint converting to int64

2018-09-11 Thread Mark Morgan Lloyd

On 11/09/18 10:15, Santiago A. wrote:
Hello:FPC: 3.0.4 (Realease from Lazarus 1.8.4 SVN: 57972)OS: Windows7 
32bits / Linux 64Bits

I have this code and I get a hint
-- var  Entity:Longword;FullParagraph:string; pIni:Integer; 
begin  Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint 
 end; ---
Hint: Converting the operands to "Int64" before doing the add could 
prevent overflow errors.I can't see why it mentions int64, there are 
integer and longword variables, but no Int64 one.


There is you know.

https://www.freepascal.org/docs-html/current/ref/refsu4.html#x26-250003.1.1


I have replaced it by
Entity:=Entity*10+LongWord(ord(FullParagraph[pIni]))-48;
That is, I have casted the result of "ord()" to longword. But I get the 
same hint.What should I do to remove the hint?


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

[fpc-pascal] Hint converting to int64

2018-09-11 Thread Santiago A.

Hello:
FPC: 3.0.4 (Realease from Lazarus 1.8.4 SVN: 57972)
OS: Windows7 32bits / Linux 64Bits

I have this code and I get a hint

-- var  Entity:Longword;FullParagraph:string; pIni:Integer; 
begin  Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint 
 end; ---


Hint: Converting the operands to "Int64" before doing the add could 
prevent overflow errors.
I can't see why it mentions int64, there are integer and longword 
variables, but no Int64 one.


I have replaced it by

Entity:=Entity*10+LongWord(ord(FullParagraph[pIni]))-48;

That is, I have casted the result of "ord()" to longword. But I get the 
same hint.

What should I do to remove the hint?


--
Saludos

Santiago A.

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal