Delphi 在类型声明中,=后面的type做什么

Delphi 在类型声明中,=后面的type做什么,delphi,Delphi,在mORMot的syncomons.pas中有以下代码片段: type .... TTimeLog = type Int64; ^^^^ 第二个类型关键字(在Int64前面)的用途是什么 当您声明与现有类型相同的类型时 编译器将新类型标识符视为旧类型标识符的别名。 因此,鉴于声明: type TValue = Real; var X: Real; Y: TValue; X和Y属于同一类型;在运行时,没有办法 区分价值和真实。这通常无关紧要, 但如果定

在mORMot的syncomons.pas中有以下代码片段:

type
  ....
  TTimeLog = type Int64;
             ^^^^
第二个
类型
关键字(在
Int64
前面)的用途是什么

当您声明与现有类型相同的类型时 编译器将新类型标识符视为旧类型标识符的别名。 因此,鉴于声明:

type TValue = Real;
var
  X: Real;
  Y: TValue;
X和Y属于同一类型;在运行时,没有办法 区分价值和真实。这通常无关紧要, 但如果定义新类型的目的是利用运行时类型 与属性编辑器关联的信息 特定类型的属性-不同 “名称”和“不同类型”变得很重要。在这种情况下,请使用 语法:

type newTypeName = type KnownType
例如:

type TValue = type Real;
type
  TMyType = type Integer;
procedure p(var t:TMyType);
  begin
  end;

procedure x;
var
  m: TMyType;
  i: Integer;
begin
  p(m); // Works
  p(i); // Error! Types of formal and actual must be identical.
end;
强制编译器创建一个称为TValue的新的不同类型

对于var参数,形式参数和实际参数的类型必须相同。对于 例如:

type
  TMyType = type Integer;
procedure p(var t:TMyType);
  begin
  end;

procedure x;
var
  m: TMyType;
  i: Integer;
begin
  p(m); // Works
  p(i); // Error! Types of formal and actual must be identical.
end;

这在中进行了描述。文档说明了什么?啊哈,它使RTTI能够看到不同的类型,这就解释了。这比RTTI要多得多。它也影响类型识别。这是编译时属性。