如何在Livecode(或HyperTalk)中创建UUID(GUID)?

时间:2013-07-02 11:14:29

标签: guid livecode hypercard

如何在Livecode或Hypercard中创建UUID(=通用唯一标识符,或GUID =全球唯一标识符,Microsoft说话)?

UUID的目标是在没有中央协调的情况下为信息提供几乎唯一的密钥。

参考

4 个答案:

答案 0 :(得分:3)

如果您使用的是Unix(如Linux或MacOS),则可以使用shell()函数调用uuidgen Terminal命令。它应该像

put shell("uuidgen") into theUUID

这有点笨拙(创建一个shell,在其中运行一个命令行应用程序,然后再次退出),但是它可以在较旧的LiveCode版本上运行,并且与shell脚本没有什么不同。< / p>

在HyperCard中,您必须在脚本设置为AppleScript的对象中使用AppleScript,或者使用“do X as AppleScript”命令。不确定AppleScript是否可以本机构建UUID,但如果不能,则可以使用AppleScript来运行shell脚本。 (在SuperCard中不存在shell()函数,它是由SuperCard,IIRC发明的。

如果没有任何帮助,这里是一个描述如何创建标准UUID的规范:http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt它并不特定于任何编程语言。

答案 1 :(得分:1)

在LiveCode 6.1(今天发布)中,您可以使用uuid函数创建一个uuid。类型4随机uuid是默认值,类型3和5基于摘要的uuid也是实现的。

答案 2 :(得分:0)

以下函数创建类型4(随机)UUID:

function getUUID
   local tUUIDpattern
   local tUUID
   local tHexDigits
   put "xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx" into tUUIDpattern
   put "1234567890abcdef" into tHexDigits
   repeat for each char tChar in tUUIDpattern
      if tChar = "x" then
         put any char of tHexDigits  after tUUID
      else
         put tChar after tUUID
      end if
   end repeat
   return tUUID
end getUUID

答案 3 :(得分:0)

到目前为止(至少在版本6.6.1中)可以使用put uuid(random)而不使用shell

if the type is empty or random a version 4 (random) UUID is returned. A cryptographic quality pseudo-random number generator is used to generate the randomness.
If the type is md5 a version 3 UUID is returned.
If the type is sha1 a version 5 UUID is returned.