On Mon, December 15, 2014 07:58, Adriaan van Os wrote: > Michael Van Canneyt wrote: >>> Well, true is -1 and false 0 :) I wonder if we should forbid it in fpc >>> mode ... >> >> We should. IMHO ByteBool is unsigned so >=0... > > I suggest to change the internal value of TRUE to 1 for all boolean types, > except in mode delphi. > Then "for b:= false to true" works as one would except.
Ord (true) = 1 even now (in FPC as well as in other Pascal compilers). However, ByteBool type is a special type provided for compatibility with Delphi (which introduced it for easier interfacing with certain MS Windows API functions if I remember correctly) and that type requires a different convention, so the value is transformed during the implicit conversion. Changing the definition of type ByteBool for non-Delphi modes wouldn't make much sense in my view. From my point of view, the primary solution for you would be simply to stick to standard Pascal type boolean where it works as expected. A hint about possibly unexpected behaviour of ByteBool in for..do loops would be probably useful. Tomas _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel