delphi GUID相关操作

GUID相关操作

代码

procedure TForm1.Button1Click(Sender: TObject);
var
  GUID1, GUID2: TGUID;
begin
  //创建GUID
  if CreateGUID(GUID1) <> 0 then
     Memo1.Lines.Add('创建失败');
  //转换为字符串
  Memo1.Lines.Add(GUIDToString(GUID1));
  //分段输出
  Memo1.Lines.Add(Format('D1 %x', [GUID1.D1]));
  Memo1.Lines.Add(Format('D2 %x', [GUID1.D2]));
  Memo1.Lines.Add(Format('D3 %x', [GUID1.D3]));
  Memo1.Lines.Add(Format('D4 %x%x', [GUID1.D4[0], GUID1.D4[1]]));
  Memo1.Lines.Add(Format('D4 %x%x%x%x%x%x', [GUID1.D4[2], GUID1.D4[3], GUID1.D4[4], GUID1.D4[5], GUID1.D4[6], GUID1.D4[7]]));
  //将字符串转换为GUID
  GUID2 := StringToGUID('{00000000-0000-0000-0000-000000000000}');
  //比较是否相等
  if IsEqualGUID(GUID1, GUID2) then
    Memo1.Lines.Add('相等')
  else
    Memo1.Lines.Add('不相等');
end;

方法

System.SysUtils.CreateGUID

function CreateGUID(out Guid: TGUID): HResult;

unit

System.SysUtils

GUID 设置为新创建的全局唯一标识符。

Windows 上,CreateGUID 调用 Windows API CoCreateGuid

MAC OS 上,GUID 是使用 libc 运行时的 uuid_generate_time 函数生成的,该函数使用网卡 MAC 地址(如果可用)。

System.SysUtils.GUIDToString

function GUIDToString(const Guid: TGUID): string;

unit

System.SysUtils

GUID 转换为字符串。

如果成功,将返回所请求的 GUID 的字符串。如果失败,则会引发 EConvertError异常。

System.SysUtils.IsEqualGUID

function IsEqualGUID(const Guid1, Guid2: TGUID): Boolean;

unit

System.SysUtils

表示两个 TGUID 值是否相同。如果值相等,则返回 True

System.SysUtils.StringToGUID

function StringToGUID(const S: string): TGUID;

unit

System.SysUtils

将字符串转换为 TGUID 数据结构。

如果成功,则返回请求的 GUID。如果失败,则会引发 EConvertError异常。

System.TGUID

TGUID = record

unit

System

TGUID 是全局唯一标识符的结构化形式。

具有以下形式:

['{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}']

其中每个x是一个十六进制数字。可以通过在代码编辑器中按 CTRL+SHIFT+G 来生成 GUID。

TGUID 提供对 GUID 的结构化访问:

  • 前 8 个十六进制数字映射 D1.
  • 接下来的 4 个十六进制数字映射 D2.
  • 接下来的 4 个十六进制数字映射 D3.
  • 接下来的 4 个十六进制数字映射 D4 中的前 2 个字节。
  • 最后 12 个十六进制数字映射 D4 中的剩余 6 个字节。
posted @ 2024-02-06 14:02  txgh  阅读(128)  评论(0编辑  收藏  举报