zoukankan      html  css  js  c++  java
  • 在delphi中生成GUID/自动获取临时表名......

    什么是 GUID ?

    全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。

    GUID 的格式为8-4-4-4-12 :“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”其中每个 x 是 0-9 或 A-F 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。


    为什么要使用 GUID ?

    世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。数据库中用作主键,标识唯一且在不同的数据库之间转换数据不会出错,而用自增字段就会有很多麻烦。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。

    Delphi中如何生成GUID:

    //懒妹:QQ:112412387

    // uses ComObj
    var
      AGuid: TGUID;
      sGUID: string;
    begin
      sGUID := CreateClassID;
      ShowMessage(sGUID); // 两边带大括号的Guid
      Delete(sGUID, 1, 1);
      Delete(sGUID, Length(sGUID), 1);
      ShowMessage(sGUID); // 去掉大括号的Guid,占36位中间有减号
      sGUID:= StringReplace(sGUID, '-', '', [rfReplaceAll]);
      ShowMessage(sGUID); // 去掉减号的Guid,占32位
    end;

    生成GUID的算法根据以下几个方面:1.当前日期与时间。2.网卡地址。3.时针序。4.自动递增计数器。其中,网卡地址是相互不同的,对没有网卡的机器,自动递增计数器对使用中的机器保持唯一性,MS保证同一台电脑中每秒生成100个GUID在3000多年内一个GUID是绝对唯一的.

    获取临时表名的例子:

    function GetTempTableName(iKind:integer=0):String;
    var
      guidTableName:TGUID;
    begin
      CreateGUID(guidTableName);
      if iKind=0 then

       //BSTempTableName自定义的表名前缀
       Result:=BSTempTableName+GUIDToString(guidTableName)
      else
       Result:=GUIDToString(guidTableName);
      Result:=StringReplace(Result,'{','',[rfReplaceAll]);
      Result:=StringReplace(Result,'}','',[rfReplaceAll]);
      Result:=StringReplace(Result,'-','',[rfReplaceAll]);
      if g_SQLtype <> 'MSSQL' then
        result := 'ORCL'+ RightStr(Result,10);
    end;

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    设计模式(一)基础面向对象
    面试题之三门问题
    「巫师3(The Witcher 3:Wild Hunt)」游戏测评
    欧拉角和四元数
    struts标签遍历各种list Map
    浅谈HtmlCleaner+XPath解析html或者xml
    hadoop简单例子
    解决JSP参数传递乱码的问题
    Set、List、Map的区别(浅谈)
    做个犀利的码农
  • 原文地址:https://www.cnblogs.com/jijm123/p/13693907.html
Copyright © 2011-2022 走看看