Генерация GUID как строки

Материал из DRKB

Генерация GUID как строки[править | править код]

Как в Run-time сгененрировать строку типа

'{821AB2C7-559D-48E0-A3EE-6DD50E83234C}'

Типа как в среде при нажатии Ctrl-Shift-G. Функция CoCreateGuid выводит значение типа TGUID, я нигде не нашёл функции конвертации TGUID -> String. Может кто знает такую функцию?


Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00138


Есть такая функция. Как ни странно называется она GUIDToString(), и живет в SysUtils.


Author: Fantasist
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00139



Можно GUIDToString написать и вручную, будет выглядеть примерно так:

procedure TForm1.Button1Click(Sender: TObject);
var
  G: TGUID;
  S: string;
  i: Integer;
begin
  CoCreateGuid(G);
  S := '{' + IntToHex(G.D1, 8) + '-' + IntToHex(G.D2, 4) + '-' + IntToHex(G.D3, 4) + '-';
  for i := 0 to 7 do
    begin
      S := S + IntToHex(G.D4[i], 2);
      if i = 1 then S := S + '-'
    end;
  S := S + '}';
  ShowMessage(GUIDToString(G) + #13 + S)
end;


Author: Jin X
ID: 00140