Hi,

In the math unit are the CompareValue functions only for signed integers. Why not for DWORD and QWORD?

I tested with the program below.

For DWord is works correctly, presumely because the int64 overload is used.
For QWord without typecast the code doesn't compile, because the compile cannot choose the right overload. With typecasts it returns the wrong values.

The math unit also has these lines:
{ this causes more trouble than it solves
function Min(a, b: Cardinal): Cardinal;
function Max(a, b: Cardinal): Cardinal;
}
It doesn't tell what problems and why.


Vincent

===========================================
program Project1;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils, Math
  { add your units here };

var
  d1, d2: dword;
  q1, q2: qword;
begin
  d1 := $F0000000;
  d2 := 10;
  writeln('CompareValue (d1,d2): ', comparevalue(d1,d2));
  writeln('CompareValue (d2,d1): ', comparevalue(d2,d1));
  q1 := $F000000000000000;
  q2 := 10;
  writeln('CompareValue (q1,q2): ', comparevalue(int64(q1),int64(q2)));
  writeln('CompareValue (q2,q1): ', comparevalue(int64(q2),int64(q1)));
  readln;
end.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to