Hi
I'm concerned with using DivMod in cases when Dividend is < 0. DivMod declaration is
procedure DivMod(Dividend: Integer; Divisor: Word; var Result,
Remainder: Word);which means that it doesn't allow for Result and Remainder to be < 0. But when Dividend is < 0, Result and/or Remainder sometimes have to be <
0. For example,
var
UnsignedDivResult, UnsignedModResult: Word;
DivResult: SmallInt absolute UnsignedDivResult;
ModResult: SmallInt absolute UnsignedModResult;
begin
DivMod(-39, 20, UnsignedDivResult, UnsignedModResult);
end;gets me UnsignedDivResult = 65535 and UnsignedModResult = 65517. Of course when treating memory as signed values (DivResult and ModResult), I can "decipher" correct values (-1 and -19) but that's obviously unclean. Sure I can also just use "div" and "mod" operators, they always get me correct values, but I understand that doing div and mod separately may be slower than DivMod on some processors.
I know that DivMod arguments have to stay as Word for Delphi compat. But in the light of the above, it seems like a good idea to add overloaded DivMod version that returns Result and Remainder as signed values ?
Michalis
