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
将 GUID 设置为新创建的全局唯一标识符。
在 Windows 上,
CreateGUID
调用 Windows API CoCreateGuid 。在 MAC OS 上,GUID 是使用 libc 运行时的 uuid_generate_time 函数生成的,该函数使用网卡 MAC 地址(如果可用)。
System.SysUtils.GUIDToString
function GUIDToString(const Guid: TGUID): string;
unit
将 GUID 转换为字符串。
如果成功,将返回所请求的 GUID 的字符串。如果失败,则会引发 EConvertError
异常。
System.SysUtils.IsEqualGUID
function IsEqualGUID(const Guid1, Guid2: TGUID): Boolean;
unit
表示两个 TGUID
值是否相同。如果值相等,则返回 True。
System.SysUtils.StringToGUID
function StringToGUID(const S: string): TGUID;
unit
将字符串转换为 TGUID
数据结构。
如果成功,则返回请求的 GUID。如果失败,则会引发 EConvertError
异常。
System.TGUID
TGUID = record
unit
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 个字节。