查看: 89|回覆: 0

delphi GUID相关操作

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-9-26
發表於 2024-2-6 14:02:00 | 顯示全部樓層 |閲讀模式

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 个字节。


来源:https://www.cnblogs.com/txgh/p/18009613
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部