Delphi 简单的编译指令
RAD Studio 10.2.3 测试√
uCompile_ZhiLing.pas
// 编译指令
unit uCompile_ZhiLing;interfaceusesSystem.SysUtils;typeTCompile_ZhiLing = classpublicconstructor Create();destructor Destroy; override;/// <summary>/// 判断操作系统/// </summary>function GetOperatingSystem: string;/// <summary>/// 自定义条件标识符(DEFINE)/// </summary>function SelfDefineLogo: string;/// <summary>/// 取消条件标识符的定义(UNDEF)/// </summary>function UnSelfDefineLogo: string;/// <summary>/// 取消定义的简单办法/// </summary>function UnSelfDefineLogo_02: string;/// <summary>/// 什么模式 [Debug 和 Release]/// </summary>function GetModel: string;/// <summary>/// 方便指针操作的编译指令/// </summary>function ConvenientPointerOperation: string;/// <summary>/// 使用 OR 和 AND/// </summary>function UseOrAnd: string;end;implementation{ TCompile_ZhiLing }constructor TCompile_ZhiLing.Create();
beginend;destructor TCompile_ZhiLing.Destroy;
begininherited;
end;function TCompile_ZhiLing.GetOperatingSystem: string;
beginResult := '啥也不是';// 其中的 "MSWINDOWS" 和 "LINUX" 就是 Delphi 预定义的 "条件标识符"{$IFDEF MSWINDOWS}Result := 'Windows';{$ENDIF}{$IFDEF LINUX}Result := 'Linux';{$ENDIF}// $IFDEF 等同于 $IF DEFINED(...){$IFDEF VER185}Result := Result + ' | ' + ('这是 Delphi 2007');{$ENDIF}{$IFDEF VER320}Result := Result + ' | ' + ('这是 Delphi XE10.2');{$ENDIF}
end;function TCompile_ZhiLing.SelfDefineLogo: string;
begin// 下面例子中自定义了条件标识符: WanYi; 标识符和定义它的指令都不区分大小写, 但大家一般惯用大写// {$DEFINE ...} 自定义的标识符都是局部的{$DEFINE XIAOYIN}{$IFDEF xiaoyin}Result := ('标识符 XIAOYIN 已定义_01');{$ELSE}Result := ('标识符 XIAOYIN 未定义_01');{$ENDIF}
end;function TCompile_ZhiLing.UnSelfDefineLogo: string;
begin{$DEFINE XIAOYIN}{$IFDEF xiaoyin}Result := ('标识符 XIAOYIN 已定义_02_01');{$ELSE}Result := ('标识符 XIAOYIN 未定义_02_01');{$ENDIF}{$UNDEF XiaoYin}{$IFDEF xiaoyin}Result := Result + ' | ' + ('标识符 XIAOYIN 已定义_02_02');{$ELSE}Result := Result + ' | ' + ('标识符 XIAOYIN 未定义_02_02');{$ENDIF}
end;function TCompile_ZhiLing.UnSelfDefineLogo_02: string;
begin// 在 {$...} 的 $ 前面随便加点什么, 让它变成 "注释", 譬如: {.$}{.$DEFINE XIAOYIN}{$IFDEF xiaoyin}Result := ('标识符 XIAOYIN 已定义_03_01');{$ELSE}Result := ('标识符 XIAOYIN 未定义_03_01');{$ENDIF}{.$UNDEF XiaoYin}{$IFDEF xiaoyin}Result := Result + ' | ' + ('标识符 XIAOYIN 已定义_03_02');{$ELSE}Result := Result + ' | ' + ('标识符 XIAOYIN 未定义_03_02');{$ENDIF}
end;function TCompile_ZhiLing.GetModel: string;
begin{$IFDEF DEBUG}Result := ('调试模式[Debug]');{$ENDIF}{$IFDEF RELEASE}Result := ('发布模式[Release]');{$ENDIF}
end;function TCompile_ZhiLing.ConvenientPointerOperation: string;
typeTMyRec = recordName: string[12];Age: Word;end;
varp: ^TMyRec;
begin
{$POINTERMATH ON}p := GetMemory(SizeOf(TMyRec) * 2);//写入p[0].Name := '小印01';p[0].Age := 22;p[1].Name := '小印02';p[1].Age := 23;//读取Result := (string(p[0].Name) + ', ' + IntToStr(p[0].Age));Result := Result + #13#10 + (string(p[1].Name) + ', ' + IntToStr(p[1].Age));FreeMemory(p);
{$POINTERMATH OFF}
end;function TCompile_ZhiLing.UseOrAnd: string;
begin{$DEFINE AAA}{$IF DEFINED(AAA) OR DEFINED(BBB)}Result := ('条件标识符 AAA 和 BBB 其中一个定义了');{$ENDIF}{$DEFINE BBB}{$IF DEFINED(AAA) AND DEFINED(BBB)}Result := Result + #13#10 + ('条件标识符 AAA 和 BBB 都定义了');{$ENDIF}
end;end.
一点点笔记,以便以后翻阅。
Delphi 简单的编译指令相关推荐
- Delphi 的编译指令(1): $DEFINE、$UNDEF、$IFDEF、$ELSE、$ENDI
2019独角兽企业重金招聘Python工程师标准>>> 一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等) ...
- Delphi编译指令了解学习
以下内容来源于网络,整理在一块儿方便以后回顾查看. Delphi 的编译指令(1) DEFINE.DEFINE.DEFINE.UNDEF.IFDEF.IFDEF.IFDEF.ELSE.$ENDIF 一 ...
- DELPHI的编译指令
DELPHI的编译指令 可以检测到这种改变, (1) Shift+F9 或 Project -> Build all project. ...
- Delphi 编译指令与说明
一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等). 一.什么是预处理? 譬如 VCL 中有很多代码是兼容 Linux 的, ...
- Delphi编译指令说明
Delphi快速高小的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流,大部分情况下不需要干涉编译器的运行,但是有时也需要对编译器进行必要的设置. ******** ...
- Delphi常见各类编译错误信息-中英对照
整理自网上的文章,也忘了出处,无意冒犯,如有侵权,请提前通知,本博客将及时处理. 一. 编译错误信息 ';' not allowed before 'ELSE' ElSE前不允许有";&qu ...
- FPGA之道(36)Verilog中的编译指令
文章目录 前言 Verilog中的编译指令 define指令 timescale指令 inlcude指令 前言 本文摘自<FPGA之道>,一起来了解下Verilog中的编译指令. Veri ...
- C#中的预编译指令介绍
原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...
- verilog编译指令
编译指令 以`(反引号)开始的某些标识符是编译器指令.在Verilog 语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令.完整的标准编译器指令 ...
最新文章
- js之argument小解
- CISS.SideMenu的bug
- vue打包后css路径_Vue打包后访问静态资源路径问题
- 组会PPT202006220717《双研究步骤的螺旋波等离子体放电结果分析》
- Linux部署动态网页,Nginx发布支持动态配置的开源Web服务器
- windows快捷键十八式(win10)
- 面对大规模系统工程,看Facebook如何处理故障排查(一)
- POJ 1804 Brainman (归并排序 -- 求逆序对数)
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
- 跨域异常与nginx的underscores_in_headers on
- Oracle相同的一个SQL执行计划截然不同的解决方法
- Vagrant 与 VirtualBox 的保姆级安装教程
- 使用Nmap扫描目标主机
- Web前端布局总体架构
- 基于惩罚函数的模拟退火算法求解有约束问题
- SAS Marketing Automation 6.3 User’s Guide 学习笔记
- 分支界限法 任务分配问题
- 皇后谜题Python
- imageview控件加载图片
- 安装Hexo博客并部署到GitHub或云服务器(细节教程,越过各种坑)
热门文章
- ubuntu解压命令全览(rar)
- shell 脚本中获取执行系统命令的输出结果
- Jsp通过request.setAttribute向前台传递变量
- 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记
- Unity (二) Animator:Events - 动画事件案例(呐喊出现字幕)
- 人脸识别--活体检测(眨眼检测)
- 并发经验八年架构师:缓存在高并发场景下该如何问题
- ACdream - 1082 - 闪电战
- 【计算机网络】数据链路层-湖南科技大学《计算机网络微课堂》笔记3.1
- 微信不是万能的,流量也不是O2O的核心