Wenn überhaupt ist der sog. "Freepascal-Bug" ein Delphi-Bug: pred und succ sollten den gleichen Ergebnistyp haben wie das Argument. FreePascal, BorlandPascal und VirtualPascal machen das auch, nur Delphi in seiner unendlichen Weisheit definiert
function Pred(X: Ordinal): Integer;
und behauptet dann noch frech:
Zitat:
The result, of the same type as X, is the predecessor of X.
(Quelle:
http://docwiki.embarcadero.com/Libraries/en/System.Pred) Mit folgendem Programm
Delphi-Quellcode:
{$Q-,R-}
var
b,c: byte;
begin
b := 0;
c := pred(b);
writeln(c:6, pred(b):6);
end.
liefern FPC, BP7 und VP2.1 jeweils
255 255, die Delphi-Versionen D2 .. D12 allerdings
255 -1