什么是 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;

在delphi中生成GUID/自动获取临时表名......的更多相关文章

  1. 在delphi中生成GUID

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

  2. 同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?

    同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?答案:不会 这就可以在以后写存储过程的时候统一临时表名了. alter procedure sp_01 as begin create ...

  3. 配置idea中类头注释中的 ${user} 自动获取电脑的名字,怎么去修改名字

    在idea安装路径下找到 idea\IntelliJ IDEA 2018.3.2\bin下面有一个文件叫:idea64.exe.vmoptions 编辑此文件就能修改主时钟自动获取的名称: 例如:添加 ...

  4. 根据Entity Framework6.X 数据生成代码(仅获取表名)

    近来学习ASP.NET MVC ,一直在看韩迎龙(Kencery)的ASP.NET MVC+EF框架+EasyUI实现权限管理.在第九节(TT模板的学习)卡住了,作者使用EF5.0做数据源,而我使用的 ...

  5. 在Delphi中使用键盘勾子获取键盘输入(译--5月7日)

    http://blog.sina.com.cn/s/blog_502b2e970100949s.html 获取键盘输入以控制无法接受输入焦点的控件考虑一些游戏,显示图片在TPainBox,但是TPai ...

  6. C#中生成GUID的四种格式

    var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12 var uuidN = Guid.NewGu ...

  7. 在C#中生成GUID的方法

    var guid = Guid.NewGuid();Debug.WriteLine(guid.ToString());   //1f3c6041-c68f-4ab3-ae19-f66f541e3209 ...

  8. Delphi中三种方法获取Windows任务栏的高度

    第一种:需要引用Windows单元 ShowMessage(IntToStr(GetSystemMetrics(SM_CYSCREEN)-GetSystemMetrics(SM_CYFULLSCREE ...

  9. PostGIS中生成GUID字段值

    create extension "uuid-ossp" update base_region set region_id = uuid_generate_v4() update ...

随机推荐

  1. 【css】怎么让Chrome支持小于12px 的文字

    谷歌浏览器Chrome是Webkit的内核,有一个 -webkit-text-size-adjust 的私有 CSS 属性,通过它即可实现字体大小不随终端设备或浏览器影响.CSS样式定义如下:-web ...

  2. 微信硬件平台(九) 自己的服务器从微信获取token并保存txt

    1安装crontab: yum install crontabs 说明: service crond start //启动服务 service crond stop //关闭服务 service cr ...

  3. Recurrent Neural Network[survey]

    0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...

  4. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  5. 给扔物线 HenCoder Plus 学员的一次分享文字版

    半个月前,和我的终极技术目标扔物线朱凯一拍即合,到了他所开展的 HenCoder Plus 课程给大家分享了 1 个多小时的「模拟面试」心得,也顺便听了几次凯哥的课程,感觉真的挺用心的.自己也希望能一 ...

  6. 纯手写AJAX

    function ajax(){ //http相应对象 var xmlhttp; //判断浏览器 if(window.XMLHttpRequest){ xmlhttp = new XMLHttpReq ...

  7. 微信小程序—如何获取用户输入文本框的值

    我们就拿简单常用的登录来举例子吧,先看最终效果图片

  8. eclipse 执行自带的maven命令无效

    原文地址:https://blog.csdn.net/qq_26386171/article/details/78262702 下面加上(前提是你的环境变量里已经配置过) -Dmaven.multiM ...

  9. C++入门之初话多态与虚函数

    多态性是面向对象程序设计的又一个重要思想,关于多态的详尽描述,请看本人的收藏https://www.cnblogs.com/hust-ghtao/p/3512461.html.这篇博文中,详尽的探讨了 ...

  10. Success Rate CodeForces - 807C (数学+二分)

    You are an experienced Codeforces user. Today you found out that during your activity on Codeforces ...