Lazarus 基础-预处理指令集

Lazarus - 隐秘的神器 本文总结回顾了Delphi 、Lazarus的发展史,以及Lazarus蓬勃发展的现状,以此作为 Lazarus 专栏的序幕。 阅读详情

Lazarus是一种类Delphi的开发语言,其有着同Delphi基本一致的预处理指令集。由于其脱胎于C,且具有较好的跨平台GUI解决方案,所以在实际应用中具有很高的商业应用价值。

用途:多数编译型编程语言都支持预处理指令,它能让我们在跨平台,或特殊用途下根据预先定义的条件来编译全部或部分代码。比如项目处于开发中调试状态时,我们会向工程中添加一些特殊调试代码以发现BUG或监控运行状态,但在发布时又不想将这些代码包含其中,于是预处理指令可以帮上这个忙。又或者在跨平台开发中,我们需要根据发布的指定平台(比如windows或linux)来编译指令代码,这时使用预处理指令是非常有必要的,它能让我们在一个工程中分别编译出不同平台的应用程序来,而不需要每个平台编写一个工程。


指令格式:{$指令名称 操作符}

定义位置:预处理指令通常定义在单元的头部,条件编译指令通常用于代码块中。

说明:同Pascal语法一样,预处理指令也是不区分大小写的;预处理指令是编译器FPC内置的,使用时无需引用任何单元。预处理指令也可以嵌套使用!

示例:

{$Ifdef Windows}

   {$ifdef Delphi_16UP}

      uses  VCL.Stdcall;

   {$Endif}

{$Else}

   uses Stdcall;

{$Endif}

一、基本指令集


指令名称

操作符

指令用途代码示例说明
CodePage

ANSI

UTF-7

UTF-8

UTF-16

Unicode

....

指定当前代码所使用的编码格式{$CodePage UTF-8}仅在Mode FPC模式下生效
Define宏名称自定义一个宏{$Define Debug}定义一个宏
Undef宏名称取消一个宏定义{$Undef Debug}取消宏定义
Ifdef宏名称判断某个宏是否被定义(是否存在宏)以决定是否执行代码

{$Ifdef Debug}

    A:=0;

{$Else}

    A:=1;

{$Endif}

    配对使用,同Else/EndIF一起使用                                   
else--IfDef/IfNDef的条件分支语句必须同IfDef /Ifndef一起使用
Endif--结束一个if指令必须同IfDef /Ifndef一起使用
IfNdef宏名称判断某个宏是否没有定义(是否不存在)        

{$IfNDef Debug}

    A:=0;

{$Else}

    A:=1;

{$Endif}

与IfDef刚好相反
Include / i文件名称包含一个外部文件{$Include File.inc}
if表达式判断表达式{$if defined(FPC) or defined(TYPE)}
MacroOn/Off宏指令开关

二、特殊预处理指令


指令名称操作符指令用途代码示例说明
Mode

Delphi

FPC

ObjFPC

指明FPC使用何种语法格式

{$Mode Delphi}使用Delphi语法

{$Mode ObjFpc}使用FreePascal语法

通常用于跨编译器保持代码兼容而设置
ModeSwitch

Out/In

.....

模式切换
InlineOn/Off内联指令 
Warning字符串IDE相关{$Warning your Message}在编译时在IDE里显示一个警告信息,但编译会继续
Error/STOP字符串IDE相关{$Error your error message}在编译时在IDE里显示一个错误信息,编译会停止 

备注:IDE相关的特殊处理指令仅仅是在使用IDE时有效,对程序的最终结果没有影响

三、系统自带的宏(部分,不断增加中...)


分类宏名称环境依赖说明
操作系统平台

Windows

MSWindows

Windows平台判断当前操作系统是否为Windows
Win3232位Windows平台判断当前操作系统是否为Win32平台     
Win6464位Windows平台
LinuxLinux平台
MacOSMacOS苹果桌面系统
AndroidAndroid安卓
AIXUnix平台IBM系统
Amiga一个早期的32位系统
UnixUnix平台
目标CPU平台X86_64
X86
i386
i8086
ARM
AArch64
LoongArch64

Free Pascal

Lazarus

Fpc_VersionFPC定义了FPC的版本号,整型

LCLGTK

LCLGTK2

LCLGTK3

LCLGTK4

LCLGTK5

GTK判断当前设置是否使用了GTK库

(未完待续...)

备注:由于资料过于缺乏,本文中少数来源于互联网,多数内容由作者翻看源代码同时亲自尝试得来,所以更新会比较慢,但如果发现内容有误请给我留言更正!

Lazarus安装和入门资料 azarus-2.2.6-fpc-3.2.2-win64 下载地址。 阅读详情

相关推荐

lazarus多线程以实现多页面定时打卡的例子

lazarus多线程以实现多页面定时打卡的例子

fgh5566的专栏 808

(转)究竟什么是Lazarus?

Lazarus是一个基于Free Pascal的Delphi仿制品。Free Pascal是Linux、Win32、WinCE、Mac OS、OS/2、68K等操作系统下的一个基于GPL/LGPL的编译器,她被设计成可以理解,并编译OOP的Delphi语法。Lazarus在上述平台下可以像 Delphi一样来开发程序,打破了这些环境下缺少可视化开发工具的困窘局面。不像Ja...

weixin_30902251的博客 2049

GPT-5.5-Cyber企业安全实战:告警研判、事件调查与AI辅助运营效能测评

大型语言模型(LLM)通过海量数据训练,具备了强大的自然语言理解和生成能力。其核心原理在于基于Transformer架构,通过自注意力机制捕捉上下文关联,从而完成复杂的推理和内容生成任务。这一技术为各行各业带来了效率革命,尤其在信息过载、知识密集型领域价值显著。在网络安全领域,面对海量告警、复杂事件调查和知识传承等挑战,LLM的技术价值得以凸显。通过针对性的领域微调和提示词工程,LLM能够作为智能助理,应用于安全告警的智能研判与富化、安全事件调查与报告自动生成、安全策略解读与合规检查以及安全知识库问答等核心

weixin_33901641的博客 421

Lazarus开发环境配置

Lazarus开发环境配置

三巧的博客 4156

Mythos如何用程序行为建模实现AI自主漏洞挖掘

程序行为建模是现代AI安全能力的核心基础,它将软件运行过程抽象为可推演的状态转移图谱,使模型摆脱对规则匹配和漏洞模式库的依赖。其原理在于跨语言代码的因果一致性学习,通过深度追踪函数调用、内存状态与并发时序,构建具备数学可验证性的内部逻辑模型。这种建模方式显著提升了AI在真实复杂环境中的漏洞发现能力,尤其在老旧系统、混合技术栈和未公开0day场景中展现出远超传统fuzzing与静态分析的技术价值。典型应用包括内核级竞态条件定位、多组件协同攻击链生成,以及CI/CD流水线中的自动化深度审计——而Claude M

545

[网络安全自学篇] 三十五.恶意代码攻击检测及恶意样本分析

本文主要结合作者的《系统安全前沿》作业,相关论文及绿盟李东宏老师的博客,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。关于攻击溯源的博客和论文都比较少,希望这篇文章对您有所帮助,如果文章中存在错误或理解不到位的地方,还请告知作者与海涵~

杨秀璋的专栏 1万+

TTesseractOCR4 使用教程

TTesseractOCR4 使用教程 项目介绍 TTesseractOCR4 是一个面向 Object Pascal 程序员的 Tesseract OCR 4.x 版本的封装库。Tesseract OCR 是一个著名的光学字符识别引擎,能够将图像中的文本自动转化为可编辑的文字。TTesseractOCR4 不仅适用于 Delphi 环境,还兼容 Lazarus 跨平台开发,让开发者可以轻松地在 ...

gitblog_00423的博客 502

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的血细胞检测与计数系统(Python+PySide6界面+训练代码)

本文将详细介绍基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的血细胞检测与计数系统,提供完整的Python实现代码、PySide6图形界面以及训练代码。本系统能够准确检测和计数血液样本中的红细胞、白细胞和血小板,为医学诊断和研究提供自动化工具。文章将涵盖数据集准备、模型训练、系统实现和性能评估等完整流程。

YOLO 108

推荐使用:TTesseractOCR4——强大的OCR引擎绑定库

推荐使用:TTesseractOCR4——强大的OCR引擎绑定库 项目介绍 TTesseractOCR4 是一款基于 Object Pascal 的扩展库,它为 Tesseract OCR 4.x 提供了接口。Tesseract OCR 是一个功能强大的光学字符识别(OCR)引擎,能够从图像中准确地提取文本。TTesseractOCR4 可以轻松集成到 Delphi 和 Lazarus 项目中,使...

gitblog_00967的博客 1072

ZeosDBO 6.0.12 源码解析:一套控件统一 Delphi/Lazarus 多数据库连接

数据库访问层在设计时最常面临的挑战,是如何在不侵入业务逻辑的前提下兼容多种数据库。成熟的解决方案通常提供统一接口,将不同客户端的差异封装在驱动层内部。ZeosDBO 正是这样一套面向 Delphi/Lazarus 生态的开源组件库,它通过协议映射机制将 SQLite、MySQL、PostgreSQL、Firebird 等连接统一为单一对象模型,并在源码层面清晰划分为 core、parsing、plain、dbc、component 五个层次,覆盖了 SQL 方言解析、客户端库动态装载、JDBC 风格接口定义

weixin_29698641的博客 217

ZeosDBO 6.0.12源码编译全指南:稳定跨库数据库访问组件实践

在Delphi与Lazarus开发中,数据库访问组件始终是构建企业级应用的关键一环。面对多数据库适配与跨平台需求,如何理解数据库连接组件的底层原理?ZeosDBO通过标准化的DBC抽象层,将MySQL、PostgreSQL、SQLite等主流数据库的差异封装在驱动层背后,为开发者提供了统一的连接、查询与事务接口,显著简化了多数据库切换的工程复杂度。这一设计不仅解决了传统组件依赖特定数据库客户端的问题,更通过MIT许可的完整源码赋予开发者深度定制能力。在实际生产场景中,从本地SQLite缓存到服务端Postg

weixin_28312391的博客 197

PeaZip免费压缩软件:发现跨平台文件管理的5大独特价值

PeaZip是一款免费开源的跨平台压缩与归档管理软件,支持超过200种压缩格式,为Windows、macOS和Linux用户提供专业级的文件压缩、加密和分割功能。这款软件不仅替代了商业压缩工具,更通过开源生态和银行级加密技术,重新定义了文件管理的效率与安全标准。 ## 项目核心价值与独特定位 [![PeaZip品牌主图标](https://raw.gitcode.com/gh_mirrors/

gitblog_00248的博客 309

TRichView 23.1 跨平台富文档开发实战指南

富文档处理是桌面应用开发的核心能力之一,涉及文本排版、表格渲染、PDF导出与跨平台兼容等关键技术。其底层原理依赖于自定义渲染管线、样式驱动布局及二进制文档解析模型,技术价值在于摆脱系统控件限制,实现高精度打印、结构化内容生成与多端一致行为。典型应用场景包括电子合同模板填充、法律文书自动化、医疗病历编辑及跨平台文档编辑器构建。对于使用 Delphi 或 Lazarus 进行企业级文档开发的工程师而言,TRichView 23.1 提供了稳定可靠的纯 Pascal 实现方案,尤其在解决 delphi andro

weixin_30231327的博客 253

SecGPT-14B案例分享:从原始Wireshark流量描述生成APT攻击链推演

本文介绍了如何在星图GPU平台上自动化部署SecGPT-14B镜像,实现从原始Wireshark流量描述生成APT攻击链推演的功能。该镜像能够快速分析网络流量数据,自动识别可疑行为并生成详细的攻击链报告,显著提升网络安全分析效率,特别适用于安全运营中心(SOC)的自动化事件分析场景。

weixin_35756690的博客 974

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南 一文搞懂什么是 Docker?分析容器的工作原理、容器的架构、Docker的优势、使用 Docker的原因。 全程手把手教你Docker的安装与使用,配置阿里云镜像加速、容器常用命令!

寸铁的博客 10万+

基于睿抗智能小车省赛第一题兵人识别的学习5.25

先用pip uninstall numpy卸载,再在后面输入pip install numpy==1.23安装版本为1.23的numpy。首先安装Anaconda环境;pycharm方便使用,安装yolov5以及一大堆数据包;由于python中的numpy插件包版本过高,训练失败,所以要安装一个版本低的包。每次运行都要先运行虚拟环境,输入:conda activate。图中所有精度大概在0.768-0.99之间。这里指定安装numpy1.23.。训练完成会得到一个衡量精度的指标。等待99张图片训练完成。

Haili_的博客 1299

zt我的Delphi开发经验谈

我的Delphi开发经验谈 -------- 开发环境 --------     Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为

刘永锋的专栏 1201

rfid标签技术原理

奇怪的是,RFID标签技术原理的深入剖析不仅揭示了其背后的奥秘,也让我们更加全面地认识到这一技术在数字化转型中的重要性和潜力。随着技术的不断进步和应用场景的不断拓展,RFID标签将在更多领域发挥重要作用,为物联网、智能制造等领域的发展注入新的活力。这意味着在一个读写器的覆盖范围内,可以同时读取多个RFID标签的数据,大大提高了数据收集的速度和效率。:RFID标签的“大脑”,负责存储和处理数据。芯片内部集成了存储器、控制逻辑和射频接口等电路,能够接收来自读写器的射频信号,执行相应的数据处理和通信任务。

x3088的博客 2159

Sherpa-ONNX:基于ONNX Runtime的下一代Kaldi高性能语音处理框架

Sherpa-ONNX是一个基于下一代Kaldi的跨平台语音处理框架,利用ONNX Runtime实现语音识别、语音合成、说话人识别、语音增强、源分离和语音活动检测等功能。该框架完全支持离线处理,无需互联网连接,能够在嵌入式系统、Android、iOS、HarmonyOS、Raspberry Pi、RISC-V、RK NPU、Axera NPU、Ascend NPU、x86_64服务器等多种硬件平

gitblog_00181的博客 342

继电器的选型规范

触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。

qq_43416206的博客 1881

某盾blackBox逆向——纯算

某盾blackBox逆向——纯算

Lzyydsb的博客 5892

delphi一些小技巧 从别处看到

开发环境--------Delphi7是一个很经典的版本,在Win2000/XP下推荐安装Delphi7来开发软件,在Vista下推荐使用Delphi2007开发软件。安装好Delphi7后,应立即安装Delphi7UpdatePack1,Delphi2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发效率,为了能更加得心应手的处理接下来的开发...

aisu3043的博客 271

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤

Robot_PLC_HMI_Automation 6393
上一篇: Lazarus 基本数据类型
下一篇: Lazarus-Json-两种方式生成效率对比
NumberTop
博客等级 码龄23年 61粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值