# uniqIdObj

an object which creates unique and compact symbols
unique symbol object

 uniqIdObj ``` ... if, however, you're looking for an easy way to obtain an unique symbol whenever you need it, here is an object which supplies unique ids. It basically has a counter which is incremented with every access and then outputs the value with a prefix ("_") as a base 36 number. This guaranties compact symbols even for large numbers : dobj = new (script "UniqIdObj") dObj.setLastId (the maxInteger - 1) put dObj.getUniqId() -- "_ZIK0ZJ" -- parent script UniqIdObj property myLastID,myLDigits,myPraefix on new me init me return me end on init me myPraefix = "_" myLDigits = getLDigits(me) setLastId me end on setLastId me,dId -- to initialize the counter with some random integer if voidP(dId) then dId = "0" else dId = string(dId) end if myLastID = integer(dId) end -------------- on getLDigits me -- returns a list of 36 digits 0..9,A..Z myLDigits = [] repeat with i = 0 to 9 myLDigits.append( string(i) ) end repeat repeat with i = 0 to 25 myLDigits.append( numToChar(65 + i) ) end repeat return myLDigits end on toBase me,dVal,dBase,sID if voidP(sID) then sId = "" if dBase > myLDigits.count then return #illegal_Base if not integerP(dBase) then dBase = myLDigits.count if not integerP (dVal) then return #bad_Input high = dVal / dBase low = dVal mod dBase sID = string( myLDigits[low + 1] ) & sID if high > 0 then return toBase (me,high,dBase,sId) else return sID end if end on getUniqid me myLastId = myLastId + 1 return myPraefix & tobase (me,myLastId) end ```

 Home shock + cgi Bits 'n pieces Director Lingo Shocklets Contact

pageID=l_uniqIdObj