FoxBase!
msgbartop
Блог Oracle разработчика
msgbarbottom
foxbase

10.01.2011 GUID в Delphi

GUID это уникальный 128 битный идентификатор, аббревиатура расшифровывается как Globally Unique Identifier. Предназначен для однозначной идентификации какого-либо программного объекта, сервиса, интерфейса. Широко применяется например в Windows реестре для однозначной идентификации веток реестра, объектов Windows, в технологиях COM, OLE, DCOM. В тексте GUID обычно записывается в следующем формате:

{0F581A51-E8A0-4224-BFB4-C2F1CFAE3D45}
Теоретически алгоритм формирования глобального уникального идентификатора не гарантирует того, что два сгенерированных идентификатора всегда будут уникальными, но на практике вероятность такого события стремится к нулю. 
В Delphi в модуле System определен тип для GUID в следующем виде:

TGUID = packed record
  D1: LongWord;
  D2: Word;
  D3: Word;
  D4: array[0..7] of Byte;
end;
Для генерации GUID можно воспользоваться функцией CoCreateGuid из модуля ActiveX. Для перевода сгенерированного GUID в строку можно воспользоваться функцией GUIDToString из модуля SysUtils. В результате будет получен текстовый формат GUID, описанный выше.
Еще одно из возможных применений GUID это формирование уникальных имен файлов. Для этого целесообразно убрать из текстового формата GUID фигурные скобки и символы тире. Ниже приведена функция, которая генерирует GUID в двух вариантах. В стандартном текстовом формате и в упрощенном формате без дополнительных форматирующих символов в виде: 0F581A51E8A04224BFB4C2F1CFAE3D45

uses SysUtils, ActiveX;
function GetGUIDStr(Simple: boolean=false): string;
  var GUID: TGUID;
begin
  Result:='';
  if CoCreateGuid(GUID) = 0 then
    Result := GUIDToString(GUID);
  if Simple then
  begin
    Result:=StringReplace(Result,'{','',[]);
    Result:=StringReplace(Result,'}','',[]);
    Result:=StringReplace(Result,'-','',[rfReplaceAll]);
  end;
end;

www.foxbase.ru


Смотрите также:



Оставьте свой комментарий

Вы должны быть авторизированны, чтобы оставить комментарий.