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.
一点点笔记,以便以后翻阅。