惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
AI
AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
AWS News Blog
AWS News Blog
S
Securelist
Schneier on Security
Schneier on Security
MyScale Blog
MyScale Blog
W
WeLiveSecurity
Hacker News: Ask HN
Hacker News: Ask HN
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
Project Zero
Project Zero
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Proofpoint News Feed
I
Intezer
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
宝玉的分享
宝玉的分享
L
LINUX DO - 热门话题
月光博客
月光博客
C
CERT Recently Published Vulnerability Notes
F
Fortinet All Blogs
GbyAI
GbyAI
博客园 - 聂微东
F
Full Disclosure
L
LINUX DO - 最新话题
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Security Affairs
I
InfoQ
The Hacker News
The Hacker News
雷峰网
雷峰网
Hacker News - Newest:
Hacker News - Newest: "LLM"
V2EX - 技术
V2EX - 技术
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
SecWiki News
SecWiki News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
大猫的无限游戏
大猫的无限游戏
博客园_首页
B
Blog RSS Feed
S
Secure Thoughts
A
About on SuperTechFans

博客园 - 秋·风

【aarch64-win64】发现fpc aarch64-win64 将TSmallPoint赋值为一个负数,并赋值给TPoint时得到一个655xx的数值的bug 修复aarch64 win64下lazarus不弹出SourceTabPopUpMenu fpc aarch64-win64版编译应用时遇到一个奇怪的bug 在windows 11 on arm64系统编译lazarus出错的处理方法 修复TDBMemo只读不能使用Ctrl+C复制文字的Bug freepascal打补丁后已支持windows 11 on arm64(lazarus aarch64 windows版也可以运行了) 查看libc.so.6的版本号 Lazarus移动版启动程序 fpc 3.2.2交叉编译i386-linux链接出错 lazarus鸿蒙开发13:使用鸿蒙原生API画图--lazarus侧关键代码 lazarus鸿蒙开发12:使用鸿蒙原生API画图--鸿蒙侧关键代码 lazarus鸿蒙开发11:使用鸿蒙原生接口画图 lazarus鸿蒙开发10:lazarus一键编译、打包助手 lazarus鸿蒙开发9:使用命令行编译DevEco Studio应用 lazarus鸿蒙开发8:在DevEco Studio的日志窗口显示日志信息 lazarus鸿蒙开发7:在 Windows 上为 OpenHarmony (LoongArch64) 编译 Qt 5.15.12 SDK 指南 lazarus鸿蒙开发6:鸿蒙project配置 lazarus鸿蒙开发5:编译ohos_hap_project lazarus鸿蒙开发4:编译OHOS_QT_Lazarus lazarus鸿蒙开发3:编译libLazarusOHOS_Wrapper.so lazarus鸿蒙开发2:编译鸿蒙版本Qt5pas lazarus鸿蒙开发1:编译QT 5.12.12 鸿蒙版 fpc/lazarus for x86_64/aarch64鸿蒙版(绿色版 2026.06.03更新) fastreport报表编辑器在aarch64等非x86_64 CPU第一次打开慢的解决方案 linux/windows双系统可用的打包程序 使用FPC自带的纯 Pascal 实现的 Zlib 替代品——paszlib QFLazarus使用说明 忽略lazarus console in/output窗显示的转义序列 编译fpc遇到的怪事(2026-05-20更新) 取消树莓派的系统双击桌面图标时出现弹窗的选择提示 银河麒麟v11安装lazarus的方法 【小技巧】lazarus的应用设置某个form不在任务栏显示(linux) 用lazarus封装了linux的rsync SimpleXML-for-lazarus fastreport在windows11(lazarus)报表设计时出现的问题 用lazarus编写的deb打包工具 龙芯deepin 25系统使用旧世界软件的方法 SimpleJSON for lazarus 中文转全拼音和首字母 调整lazarus gtk2编辑控件背景颜色 fpc/lazarus可用的宏 Lazarus IDE宏列表 【原创控件】PopupMenu和MainMenu自绘单元 【原创控件】PopupMenu自绘 【原创控件】lazarus自定义mainmenu菜单栏(2026-02-26 增加菜单项图标尺寸参数) cudaText存在段落长度超过一定字数时会出现字符重叠的问题 lazarus编写的程序在Ubuntu任务栏/快捷栏不显示设定的图标 lazarus实现拖放文件 在uos使用lazarus调试时遇到的问题 【原创控件】lazarus IDE界面备份和恢复插件(2026-02-07增加恢复默认布局及官方已集成到lazarus) lazarus for arm32编译so链接出错
lazarus扩展IDE宏的方法
秋·风 · 2026-03-20 · via 博客园 - 秋·风

lazarus IDE宏在BuildManager.pas这个单元管理,现以添加projVer宏,获取当前project的版本号为例:
1、TBuildManager的private添加类似的:

    function MacroFuncProjVer(const {%H-}Param: string; const {%H-}Data: PtrInt;
                                   var {%H-}Abort: boolean): string;

2、在procedure TBuildManager.SetupTransferMacros添加:

  GlobalMacroList.Add(TTransferMacro.Create('ProjVer','',
                      lisProjectVer,@MacroFuncProjVer,[]));

3、在procedure TBuildManager.TranslateMacros添加:

  tr('ProjVer',lisProjectVer);

4、在initialization添加MacroFuncProjVer代码(实现读取project的版本号):

function TBuildManager.MacroFuncProjVer(const Param: string;
  const Data: PtrInt; var Abort: boolean): string;
const
  cParamNames: array of string = ('', 'major', 'minor', 'rev', 'build');
  cParamDefVals: array of string = ('0.0', '0', '0', '0', '0');
var
  i: integer;
begin
  for i := 0 to high(cParamNames) do
    if CompareText(Param, cParamNames[i]) = 0 then
    begin
      // check the project and whether the version is used
      result := cParamDefVals[i];
      if Project1 = nil then exit;
      if Project1.ProjResources = nil then exit;
      if Project1.ProjResources.VersionInfo = nil then exit;
      if Project1.ProjResources.VersionInfo.UseVersionInfo = false then exit;

      // return version or specified number
      with Project1.ProjResources.VersionInfo do
        case i of
          1: exit(IntToStr(MajorVersionNr));
          2: exit(IntToStr(MinorVersionNr));
          3: exit(IntToStr(RevisionNr    ));
          4: exit(IntToStr(BuildNr       ));
        else
          // return the full version number, discarding the zero revision and build
          if BuildNr <> 0 then
            exit(Format('%d.%d.%d.%d', [MajorVersionNr, MinorVersionNr, RevisionNr, BuildNr]))
          else if RevisionNr <> 0 then
            exit(Format('%d.%d.%d'   , [MajorVersionNr, MinorVersionNr, RevisionNr]))
          else
            exit(Format('%d.%d'      , [MajorVersionNr, MinorVersionNr]));
        end;
    end;
  result := ''; // invalid parameter
end;

5、在LazarusIDEStrConsts.pas单元添加lisProjectVer

  lisProjectVer = 'Project version';

修改后重构lazarus。
使用方法:
比如在目标文件名添加版本号,当完成编译后,生成的程序就会带上版本号:

image

image