Folgende Funktion erzeugt sequentielle
GUIDs.
Während normale GUIDs eine quasi zufällige Folge bilden, sind sequentielle GUIDs die auf einem PC erzeugt wurden geordnet.
normale GUIDs (hexadezimal codiert)
Code:
CF739CDDB1582749B9E89752ED823C0E
29A77A8CC306D94E8CD0B9567DFD7B76
49F9E9E6B2A4B649A616CE96D3AD497F
9222BBBCC8057B4782D35E600D5F5805
sequentielle GUIDs
Code:
660E110911009511B1DF7AFC8491FD96
660E110911009511B1DF7AFC8491FD97
660E110911009511B1DF7AFC8491FD98
660E110911009511B1DF7AFC8491FD99
660E110911009511B1DF7AFC8491FD9A
Sequentielle GUIDs können als Primärschlüssel einer Tabelle eine bessere
DB Leistung bringen als herkömmliche GUIDs.
Delphi-Quellcode:
type
TUuidCreateSequential =
function(
out guid:TGUID):Integer;
stdcall;
var
_UuidCreateSequential : TUuidCreateSequential;
procedure CreateSequentialGuid(
var guid: TGUID);
begin
if not Assigned(_UuidCreateSequential)
then
begin
_UuidCreateSequential := GetProcAddress(GetModuleHandle('
rpcrt4.dll'), '
UuidCreateSequential');
end;
if Assigned(_UuidCreateSequential)
then
begin
if _UuidCreateSequential(
guid) <> 0
then
OleCheck(CoCreateGuid(
guid));
// Fallback auf Standard GUID
end
else
OleCheck(CoCreateGuid(
guid));
// Fallback auf Standard GUID
end;