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!
- dclrand
- r00000_65535 : RndUniN( 0..65535);
- r16384_65535 : RndUniN(16384..65535);
- r32768_49151 : RndUniN(32768..49151);
- dclfunc
- // create a random UUID
- // 1 2 3
- // 123456789012345678901234567890123456
- // 12345678-1234-1234-1234-123456789012
- //
- function ESGGetUUID
- : string
- var
- sUUID : string;
- sUUID_hex : string;
- sTemp : string;
- begin
- SetUShort(sUUID, 1, r00000_65535);
- SetUShort(sUUID, 3, r00000_65535);
- Bin2Hex(sUUID, 4, sTemp);
- sUUID_hex := sTemp;
- SetUShort(sUUID, 1, r00000_65535);
- Bin2Hex(sUUID, 2, sTemp);
- sUUID_hex := sUUID_hex + "-" + sTemp;
- SetUShort(sUUID, 1, r16384_65535);
- Bin2Hex(sUUID, 2, sTemp);
- sUUID_hex := sUUID_hex + "-" + sTemp;
- SetUShort(sUUID, 1, r32768_49151);
- Bin2Hex(sUUID, 2, sTemp);
- sUUID_hex := sUUID_hex + "-" + sTemp;
- SetUShort(sUUID, 1, r00000_65535);
- SetUShort(sUUID, 3, r00000_65535);
- SetUShort(sUUID, 5, r00000_65535);
- Bin2Hex(sUUID, 6, sTemp);
- sUUID_hex := sUUID_hex + "-" + sTemp;
- ESGGetUUID := sUUID_hex;
- end ESGGetUUID;
No comments:
Post a Comment