秋·风

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

【aarch64-win64】发现fpc将TSmallPoint赋值为一个负数,并将TSmallPoint赋值给TPoint时得到一个655xx的数值的bug

近日发现fpc aarch64-win64的bug: 将TSmallPoint赋值为一个负数,并赋值给TPoint时得到一个错误的值:655xx的数值。
【aarch64-win64】修复aarch64 win64下lazarus不弹出SourceTabPopUpMenu及拖dock时出错的两个bug(2026-07-20更新)就是这个Bug引起的
program project2;
uses
classes,sysutils;
var
  P: TSmallPoint;
  MP: TPoint;
begin
  p.X:=123;
  p.Y:=-2;
  MP:= p;
  WriteLn('p.y='+(P.Y).ToString);
  WriteLn('MP.y='+(MP.Y).ToString);
end.

image

在fpc未修复之前,用Smallint强制转换就可以值得正确的数值:

program project2;
uses
classes,sysutils;
var
  P: TSmallPoint;
  MP: TPoint;
begin
  p.X:=123;
  p.Y:=-2;
  MP:= p;
  WriteLn('p.y='+(P.Y).ToString);
  WriteLn('MP.y='+(MP.Y).ToString);
  WriteLn('SmallInt(MP.y)='+(SmallInt(MP.Y)).ToString);
end.

image

 

posted on 2026-07-22 09:35  秋·风  阅读(21)  评论(0)    收藏  举报