Delphi Compiler Error
W1023 Comparing signed and unsigned types – widened both operands
Reason for the Error & Solution
To compare signed and unsigned types correctly the compiler must promote both operands to the next larger size data type.
To see why this is necessary, consider two operands, a Shortint with the value -128 and a Byte with the value 130. The Byte type has one more digit of precision than the Shortint type, and thus comparing the two values cannot accurately be performed in only 8 bits. The proper solution for the compiler is to promote both these types to a larger, common, size and then to perform the comparison.
program Produce;
var
s : shortint;
b : byte;
begin
s := -128;
b := 130;
assert(b < s);
end.