| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> pb >> 编程技巧 >> 文章正文
用pb生成guid            【字体:
用pb生成guid
作者:-    文章来源:-    点击数:    更新时间:2007-3-30

编一个全局函数如下:
  //---------------------------------------------
  //Function f_get_GUID//得到全球唯一码
  //Argument: <ref string> of_guid //全球唯一码
  //Return: [None]
  //Create by 泥草鞋 2004-03-10
  //----------------------------------------------
  oleObject PBObject
  long ll_result
  PBObject = CREATE oleObject
  ll_result = PBObject.ConnectToNewObject("PowerBuilder.Application")
  IF ll_result < 0 THEN
  messagebox(gs_message,"连接失败:与PowerBuilder.Application连接出错!")
  return
  ELSE
  ll_result = PBObject.GenerateGUID(REF of_guid)
  END IF

  IF ll_result < 0 THEN
  messagebox(gs_message,"生成GUID失败:不能获得GUID!")
  return
  END IF

  of_guid = mid(of_guid,2,len(of_guid) - 2)
  //End of Fuction

 

 好啦,以后不用为主键重复问题再烦恼了吧。

  不过,请注意该函数需要的支持文件:(以PB7.0为例)
  pbappl.reg(执行它注册一遍,7.0以下必须此文件)
  Pbvm70.dll(不用多说了)
  Pbaen70.tlb(PB自动应用服务类库入口)

   GUID如何做到唯一?

  要确保一个标识是唯一的,仅有两个方法:
  1.通过一些机构组织来登记;
  2.使用特别的算法来产生唯一的数字,这些数字可被认为在世界范围内是唯一的。
  第一个方法很常见,比如身份证号码是国家制定的标识个人。它的问题是,制定这标识的机构组织自身存在执行偏差,而且手续繁琐,多数情况下你得花钱费时。
  第二个方法更适合于开发者。如果你可以发明一个算法,每次调用它都可以产生一个可被认为是唯一的名字,那么这个问题就解决了。

  事实上,开发软件基金会(Open Software Foundation,OSF)已经研究出一种能产生唯一标识符的算法,产生全球唯一标识符(Universally Unique Identifier,UUID)。在COM的命名标准上,微软使用同样的算法!在COM中微软将它重命名为Globally Unique Identifier(GUID)。
  生成GUID的算法根据以下几个方面:1.当前日期和时间。2.网络适配器卡地址。3.时针序。4.自动递增计数器。其中,网卡地址是相互不同的,对没有网卡的机器,地址对使用中的机器保持唯一性。
  GUID的记录通常采用16进制。不过这没有关系,一个典型的GUID类似为:"88AB240C-F761-49B8-B47F-94B0ABA4115A",略去"-",即为一个128位的唯一数字。2的128次方是一个非常大的数字。128位的接口标识符使得我们可能创建大约340282366920900000000000000000000000000个独立的接口,足够为将来10782897524560000000年每秒创建一万亿个接口。
  这是个什么概念呢?就拿这几个数字中最小的“一万亿”来说。假如把银河系缩小一万亿倍,也就是把银河系直径缩小到一百万公里,这时太阳就变成一粒芝麻,那么最大的行星木星就变成了一粒灰尘。
  即使地球毁灭了,它仍然是全球唯一。

 

文章录入:fengyun    责任编辑:fengyun 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • PB编程技巧实例

  • 制作中国式报表(二)

  • 制作中国式报表(一)

  • PB中隐藏下拉数据窗的检索参…

  • 在PB中巧用下拉数据窗口

  • PowerBuilder中数据窗口使用…

  • DataWindow的数据缓冲区

  • 利用PowerBuilder开发格式生…

  • 用DataWindow实现对多表的修…

  • 不安装Oracle数据库的连接方…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |