秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

这是和谐向fpc官方提交的】lazarus中构建带VersionInfo的windows程序(win32/win64)的exe文件, 在windows查看文件属性 VersionInfo 字符串条目不能显示完整的unicode字符串。
【2025-01-09上传的lazarus36绿色版是修复后的版本】
修复方法:
1、打开fpcsrc/packages/fcl-res/src/versionresource.pp b/packages/fcl-res/src/versionresource.pp
找到procedure TVersionResource.WriteStringEntry(const aKey, aValue: string); 

  block.vallength:=length(aValue)+1;

改为:

  block.vallength:=length(Widestring(aValue))+1;

完整的如下:

复制代码
procedure TVersionResource.WriteStringEntry(const aKey, aValue: string);
var block : TVerBlockHeader;
    before: int64;
begin
  before:=RawData.Position;
  block.length:=0;
  block.vallength:=length(Widestring(aValue))+1;
  block.valtype:=1;
  block.key:=aKey;
  {$IFDEF ENDIAN_BIG}
  block.vallength:=SwapEndian(block.vallength);
  block.valtype:=SwapEndian(block.valtype);
  {$ENDIF}
  RawData.WriteBuffer(block,6);
  WriteWideString(block.key);
  AlignDWordWriting;
  WriteWideString(aValue);
  AlignDWordWriting;

  WriteFixedBlockLength(before);
end;
复制代码

2、重新编译fpc、lazarus(建议用fpcupdeluxe)和应用
如果用fpcupdeluxe请按以下步骤操作,一定要勾上FPC/Lazarus rebuild only

 

 修复后:

 

posted on   秋·风  阅读(142)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2023-01-09 lazarus linux/windows简单实用的三层控件QFRemoteDataSet
点击右上角即可分享
微信分享提示