首页 > 其他分享 >解决lazarus for win版本断点时不能显示中文变量的值和未定义的中文变量在Messages显示乱码的2个Bug

解决lazarus for win版本断点时不能显示中文变量的值和未定义的中文变量在Messages显示乱码的2个Bug

时间:2024-09-13 20:05:59浏览次数:9  
标签:中文 变量 未定义 LBZ 2024.09 lazarus Line

按【让fpc/lazarus支持中文变量/过程/函数/中文控件名称】处理后已可以使用中文变量,但在debug断点时不能显示中文变量的值和未定义的中文变量在Messages显示乱码。
存在的问题:
1、不显示中文变量的值:

2 、在IDE的Messages未定义的中文变量显示乱码:

 解决方法:
1、不显示中文变量的值:
打开lazarus\components\fpdebug\fppascalparser.pas
添加红色代码。

function CheckOpenBracket: Boolean;
  var
    p: PChar;
  begin
    p := TokenEndPtr;
    while p^ in [' ', #9, #10, #13] do
      inc(p);
    Result := p^ = '(';
  end;

  procedure AddIdentifier;
  var
    intr: TFpIntrinsicFunc;
  begin
    while TokenEndPtr^ in ['a'..'z', 'A'..'Z', '_', '0'..'9', '$',#$80..#$ff] do //2024.09.11 LBZ lazarus 3.4为第2709行
  inc(TokenEndPtr); // TODO: Check functions not, and, in, as, is ... if (CurPart <> nil) and (CurPart.CanHaveOperatorAsNext) then case TokenEndPtr - CurPtr of
    if (FIntrinsicPrefix = ipColon) and (CurPtr^ = ':') then begin
      inc(CurPtr);
      AddIntrinsic;
    end
    else
    case CurPtr^ of
      '@' :      AddPart(TFpPascalExpressionPartOperatorAddressOf);
      '^':       AddRefOperator; // ^A may be #$01
      '.':       HandleDot;
      '+', '-' : AddPlusMinus;
      '*', '/' : AddPart(TFpPascalExpressionPartOperatorMulDiv);
      '(':       HandleRoundBracket;
      ')':       CloseBracket(TFpPascalExpressionPartRoundBracket);
      '[':       HandleSqareBracket;
      ']':       CloseBracket(TFpPascalExpressionPartSquareBracket);
      ',':       HandleComma;
      '=', '<',
      '>':       HandleCompare;//TFpPascalExpressionPartOperatorCompare
      '''', '#': AddConstChar;
      '0'..'9',
      '$', '%', '&':  AddConstNumber;
      'a'..'z',
      'A'..'Z', '_',#$80..#$ff: AddIdentifier;  //2024.09.11 LBZ lazarus 3.4为第3056行
      else begin
          SetParserError(fpErrPasParserUnexpectedToken_p);
          break;
        end;
    end;
    if not FValid then
      break;

2 、在IDE的Messages未定义的中文变量显示乱码
打开\lazarus\ide\etfpcmsgparser.pas,找到:
function TIDEFPCParser.ToUTF8(const Line: string): string;//lazarus 3.4在第3227行

添加红色代码

function TIDEFPCParser.ToUTF8(const Line: string): string;
begin
  if PC_FullVersion>=20701 then
  {$ifdef MSWINDOWS}            //2024.09.13 LBZ
    Result:=SysToUTF8(Line)     //2024.09.13 LBZ
  {$else}                       //2024.09.13 LBZ
  Result:=ConsoleToUTF8(Line)   //2024.09.13 LBZ
  {$endif}                      //2024.09.13 LBZ
  else begin
    {$IFDEF MSWINDOWS}
    Result:=WinCPToUTF8(Line);
    {$ELSE}
    Result:=SysToUTF8(Line);
    {$ENDIF}
  end;
end;

修改完成后重新编译lazarus。
修复后,lazarus对中文的支持已算比较理想(不过在linux中文变量还存在问题,还要继续研究,等完成后再分享给大家,或你已解决,也希望您能和我分享,谢谢!)

 

 

标签:中文,变量,未定义,LBZ,2024.09,lazarus,Line
From: https://www.cnblogs.com/qiufeng2014/p/18412792

相关文章

  • vue2 + scss 全局引入 变量使用
    百度以及时AI帮助说的配置方式都大差不差,但是我的总是报错,意思就是变量找不到,报错如下Foraguideandrecipesonhowtoconfigure/customizethisproject,<br> 然后AI和文章写的vue.config.js的配置内容基本如下module.exports={css:{loaderOp......
  • 反射获取构造器、成员方法、成员变量
    目录一、反射    1.反射的概述    2.反射的作用二、获取Class类对象的方式三、反射获取构造方法并使用    1.Class类获取构造方法对象的方法    2.Constructor类用于创建对象的方法四、反射获取成员变量并使用    1.Class类......
  • 小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)
    小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)目录小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现LightGBM+BO-Transformer-LSTM......
  • 倍福twincat2变量变化监控方法
    使用场景使用twincat2scopeview工具对程序中快速变化的变量进行监控并分析程序异常点监控设置打开TwincatScopeView软件新建示波器并添加Channel填写AMS地址插入需要监控的变量(此处可将需要监控的变量赋值,置顶,方便添加)调整窗口显示范围选择固定时间监视/持续监控......
  • DevExpress WPF中文教程:如何解决排序、过滤遇到的常见问题?(二)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • PbootCMS英文站搜索页包屑中文修改
    通过修改 {pboot:position} 标签的参数,可以轻松地将面包屑中的中文文本修改为英文,并自定义分隔符和分割图标。具体步骤如下:打开模板文件:打开需要修改的模板文件,例如 search.php。找到面包屑标签:找到 {pboot:position} 标签。修改标签参数:修改分隔符:separato......
  • Pbootcms中文域名获取授权码方法
    当使用PbootCMS搭建的网站包含中文域名后缀时,官方授权码可能会提示“域名格式有误”。这是因为PbootCMS的授权系统默认只支持英文域名后缀。可以通过将中文域名转码为URL编码的形式来解决这一问题。解决方法中文域名转码访问转码工具:访问中文域名转码工具网站:https......
  • C语言数据类型、变量及数据类型的长度、取值范围
    文章目录一、数据类型介绍1.字符型2.整型3.浮点型4.布尔类型二、变量1.变量的创建2.变量的分类三、数据类型的长度(字节)1.sizeof操作符2.各种数据类型的长度3.sizeof中表达式不计算四、各种类型的取值范围1.signed和unsigned2.数据类型的取值范围五、整型提升练习1......
  • urllib发送get请求_中文传参问题
    GET请求是HTTP协议中的一种基本方法,当需要在GET请求中传递中文参数时需要额外对中文进行编码(英文不需要),因为url中只能包含ascii字符。可以使用urllib.parser.urlencode()或urllib.parse.quote()方法对中文转码。详细查官方文档:https://docs.python.org/3.12/library/urllib.par......
  • VisualStudio 2022 如何显示 dotnet 6 及以上版本的框架的代码注释为中文
    官方现在只将中文注释维护到.NET5版本,没有为.NET6和.NET7和.NET8版本维护框架的中文注释。想要使用中文注释,需要使用第三方工具感谢https://github.com/stratosblue大佬提供的IntelliSenseLocalizer工具使用方法请参阅IntelliSenseLocalizer使用文档更多请参......