Delphi GUID 获取GUID值的方式
Delphi GUID介绍
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
GUID一词有时也专指微软对UUID标准的实现。
在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
源码:
function CoCreateGuid(out guid: TGUID): HResult; stdcall; external 'ole32.dll' name 'CoCreateGuid';
function CreateGUID(out Guid: TGUID): HResult;
begin
Result := CoCreateGuid(Guid);
end;
function GUIDToString(const GUID: TGUID): string;
var
P: PWideChar;
begin
if not Succeeded(StringFromCLSID(GUID, P)) then
ConvertError(@SInvalidGUID);
Result := P;
CoTaskMemFree(P);
end;
方式1:
function GetGUID: string;
var
Guid: TGUID;
begin
CreateGUID(Guid);
Result := GUIDToString(Guid);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ShowMessage(GetGUID);
end;
方式2:
function Guid_Gen: ansistring;
var
s,gstr: string;
i: longint;
begin
s := '0123456789abcdef';
//8-4-4-4-12
gstr := 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
for i := 1 to length(gstr) do
begin
if gstr[i] = 'x' then
gstr[i] := s[Random(16) + 1];
end;
Result:=gstr;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ShowMessage(Guid_Gen);
end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.17075300216675 seconds