Delphi 简单的编译指令

RAD Studio 10.2.3 测试√


uCompile_ZhiLing.pas

// 编译指令
unit uCompile_ZhiLing;

interface

uses
  System.SysUtils;

type
  TCompile_ZhiLing = class
  public
    constructor 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();
begin

end;

destructor TCompile_ZhiLing.Destroy;
begin

  inherited;
end;

function TCompile_ZhiLing.GetOperatingSystem: string;
begin
  Result := '啥也不是';
  // 其中的 "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;
type
  TMyRec = record
    Name: string[12];
    Age: Word;
  end;
var
  p: ^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.

一点点笔记,以便以后翻阅。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值