按【讓fpc/lazarus支持中文變量/過程/函數/中文控件名稱】處理后已可以使用中文變量,但在debug為FpDebug模式時斷點不能顯示中文變量的值和未定義的中文變量在Messages顯示亂碼。
存在的問題:
1、不顯示中文變量的值:
存在的問題:
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 for linux版本無此問題)未定義的中文變量顯示亂碼是ConsoleToUTF8引起的,已報官方修復。修復前可按以下方法處理:(2024-10-12更新)
打開\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 if (pos('"',Line)>0) then Result:= SysToUTF8(Line) //FPC編譯信息需要用SysToUTF8 else Result:=ConsoleToUTF8(Line) //windows帶路徑信息時需要用ConsoleToUTF8 {$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對中文的支持已算比較滿意,不過在debug模式為GDB時中文變量的值提示還存在問題,還要繼續研究,等完成后再分享給大家,或你已解決,也希望您能和我分享,謝謝!
【原創】今天終于解決lazarus debug模式為GDB時中文變量顯示出錯的問題(2024-10-08)



2024-10-12的修復方法解決了在windows下中文目錄顯示亂碼的問題


浙公網安備 33010602011771號