按【让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