Tuzo, Bill, It is for Indicator mode, and it must get recalculated once each pass. I need a hash of a specified file paths that may or may not change during passes.
You can have two different files of the same name that are unique due to being located in different folders. In static variables, everything is in essence in the same folder. I have to append what is essentially a path string to each name to make it unique. However, path strings can be large, and I have hundreds of these variables, so I wanted to compress the path string down to a few characters with a insignificant chance of a collision. The key generated must always be the same for the same path string. I have the simple calculation, now just to generate the string from the number. I played around with AFL for a few hours and came to the conclusion that it can't be done easily. The best I could do was generate a 22 bit key. So I switched to jScript (which I don't know much about) and painstakingly fought my way through the problem for a few hours with MS documentation. I finally found an online reference cheat sheet that I could read quickly to find the right jScript operators and syntax at http://javascript-reference.info/ Piece of cake after that. Here is what I came up with: // BDKR algorithm based on Brian Kernighan and Dennis Ritchie's work // Returns a six character 0-9,A-V (30 bit) key string from any length input string <% function Hash6String(str){ var Hash = 0; for(i=0; i<str.length; i++){ Hash = (Hash * 131 + str.charCodeAt(i)) & 0x3FFFFFFF; } return Hash.toString(32).toUpperCase(); } %> BR, Dennis On Aug 8, 2008, at 1:47 AM, tuzo_wilson wrote: > --- In [email protected], Dennis Brown <[EMAIL PROTECTED]> wrote: > >> I have a problem where I need to make my static variable names unique >> by appending a unique key string to them. The key is generated from > > I'm assuming this is at runtime. Would a GUID suit your purposes? > e.g. MyVar1_8EA7256DFE214820AAB1BE58E2898A0A > > In JScript: > > function CreateGuid() > { > var typeLib = new ActiveXObject("Scriptlet.TypeLib"); > var guid = typeLib.Guid.substr(1,36); > return guid.replace(/-/g, ""); > } > > > Tuzo
