Monday, May 9, 2016

SilkPerformer: Create Random UUIDs

The code below creates an UUID using random numbers according to RFC 4122. Since UUIDs are created with 8 random numbers, the probability of creating duplicate numbers is lower than your winning lottery (when you actually purchased a ticket). Any suggestions for improvement are welcome!
  1. dclrand  
  2.   r00000_65535 : RndUniN(    0..65535);  
  3.   r16384_65535 : RndUniN(16384..65535);  
  4.   r32768_49151 : RndUniN(32768..49151);  
  5. dclfunc  
  6.   // create a random UUID  
  7.   //          1         2         3  
  8.   // 123456789012345678901234567890123456  
  9.   // 12345678-1234-1234-1234-123456789012  
  10.   //  
  11.   function ESGGetUUID  
  12.   : string  
  13.   var  
  14.     sUUID     : string;  
  15.     sUUID_hex : string;  
  16.     sTemp     : string;  
  17.   begin  
  18.     SetUShort(sUUID,  1, r00000_65535);  
  19.     SetUShort(sUUID,  3, r00000_65535);  
  20.     Bin2Hex(sUUID, 4, sTemp);  
  21.     sUUID_hex := sTemp;  
  22.     SetUShort(sUUID,  1, r00000_65535);  
  23.     Bin2Hex(sUUID, 2, sTemp);  
  24.     sUUID_hex := sUUID_hex + "-" + sTemp;  
  25.     SetUShort(sUUID,  1, r16384_65535);  
  26.     Bin2Hex(sUUID, 2, sTemp);  
  27.     sUUID_hex := sUUID_hex + "-" + sTemp;  
  28.     SetUShort(sUUID,  1, r32768_49151);  
  29.     Bin2Hex(sUUID, 2, sTemp);  
  30.     sUUID_hex := sUUID_hex + "-" + sTemp;  
  31.     SetUShort(sUUID,  1, r00000_65535);  
  32.     SetUShort(sUUID,  3, r00000_65535);  
  33.     SetUShort(sUUID,  5, r00000_65535);  
  34.     Bin2Hex(sUUID, 6, sTemp);  
  35.     sUUID_hex := sUUID_hex + "-" + sTemp;  
  36.     ESGGetUUID := sUUID_hex;  
  37.   end ESGGetUUID;  

No comments:

Post a Comment