Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Sequentielle GUIDs erzeugen

  Alt 21. Jun 2010, 11:31
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;
Andreas
  Mit Zitat antworten Zitat