CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

郁闷中,高手请进!................

楼主fans2000(授我以渔)2002-07-26 09:07:07 在 Delphi / VCL组件开发及应用 提问

请问在DELPHI中如何用程序来动态生成一组GUID号! 问题点数:100、回复次数:9Top

1 楼xzhongjin(无聊的很)回复于 2002-07-26 09:18:44 得分 5

为了100分我要回答:实际上也很好解决,有很多的方法,伪随机是一个不错的方法,循环响应的次数获得的数值总是相同的。要么就是读取电脑的各种序列号加以运算。Top

2 楼AmpyShccl(独步)回复于 2002-07-26 09:23:18 得分 5

CreateClassID   generates   a   new   GUID   and   returns   it   as   a   string.  
   
  Unit  
   
  ComObj  
   
  Category  
   
  COM   utilities  
   
  function   CreateClassID:   string;  
   
  Description  
   
  Use   CreateClassID   to   create   a   new   GUID   and   access   it   as   a   string.   A   demo   of   the   CreateClassID   function   is   available   in   the   Demos   area.Top

3 楼AP()回复于 2002-07-26 09:28:18 得分 5

Ctrl+Shift+G  
  它是随机生成的自己用随机数生成  
  typedef   struct   _GUID   {  
          unsigned   long   Data1;  
          unsigned   short   Data2;  
          unsigned   short   Data3;  
          unsigned   char   Data4[8];  
  }   GUID;  
   
  Top

4 楼tangss(啊,旺财!)回复于 2002-07-26 09:30:44 得分 5

UP!Top

5 楼Kingron(单身走我路……)回复于 2002-07-26 09:32:34 得分 20

function   GetGUID:string;  
  var  
    id:tguid;  
  begin  
    if   CoCreateGuid(id)=s_ok   then  
      result:=guidtostring(id);  
  end;  
  Top

6 楼jianling0538(zjl)回复于 2002-07-26 09:33:12 得分 20

uses   ActiveX,   ComObj;  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  var  
      vGUID:   TGUID;  
  begin  
      CoCreateGUID(vGUID);  
      Caption   :=   GUIDToString(vGUID);  
  end;  
   
  循环调用以上方法即可Top

7 楼tangss(啊,旺财!)回复于 2002-07-26 09:33:23 得分 5

UP!Top

8 楼AP()回复于 2002-07-26 09:35:47 得分 5

Private   Type   GUID  
  Data1   As   Long  
  Data2   As   Integer  
  Data3   As   Integer  
  Data4(7)   As   Byte  
  End   Type  
   
  Private   Declare   Function   CoCreateGuid   Lib   "OLE32.DLL"   (pGuid   As   GUID)   As  
  Long  
   
  Public   Function   GetGUID()   As   String  
  '(c)   2000   Gus   Molina  
   
  Dim   udtGUID   As   GUID  
   
  If   (CoCreateGuid(udtGUID)   =   0)   Then  
   
  GetGUID   =   _  
  String(8   -   Len(Hex$(udtGUID.Data1)),   "0")   &   Hex$(udtGUID.Data1)   &   _  
  String(4   -   Len(Hex$(udtGUID.Data2)),   "0")   &   Hex$(udtGUID.Data2)   &   _  
  String(4   -   Len(Hex$(udtGUID.Data3)),   "0")   &   Hex$(udtGUID.Data3)   &   _  
  IIf((udtGUID.Data4(0)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(0))   &   _  
  IIf((udtGUID.Data4(1)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(1))   &   _  
  IIf((udtGUID.Data4(2)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(2))   &   _  
  IIf((udtGUID.Data4(3)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(3))   &   _  
  IIf((udtGUID.Data4(4)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(4))   &   _  
  IIf((udtGUID.Data4(5)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(5))   &   _  
  IIf((udtGUID.Data4(6)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(6))   &   _  
  IIf((udtGUID.Data4(7)   <   &H10),   "0",   "")   &   Hex$(udtGUID.Data4(7))  
  End   If  
   
  End   Function  
  Top

9 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-07-26 09:36:30 得分 20

//同意AmpyShccl的方法  
  //当然最关键的是Windows提供的Api函数CoCreateGuid()   //ole32.dll  
   
  uses   ComObj,   ActiveX;  
   
  (*  
  //from   ComObj.pas  
  function   CreateClassID:   string;  
  var  
      ClassID:   TCLSID;  
      P:   PWideChar;  
  begin  
      CoCreateGuid(ClassID);  
      StringFromCLSID(ClassID,   P);  
      Result   :=   P;  
      CoTaskMemFree(P);  
  end;  
  *)  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      Caption   :=   CreateClassID;   //function   ComObj.CreateClassID  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
      vGUID:   TGUID;  
  begin  
      CoCreateGuid(vGUID);   //function   ActiveX.CoCreateGuid  
      Caption   :=   GUIDToString(vGUID);  
  end;  
   
  嘻嘻嘻   伴水   :)   版权所有   嘻嘻嘻嘻Top

10 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-07-26 09:37:43 得分 5

//同意AmpyShccl的方法  
  //当然最关键的是Windows提供的Api函数CoCreateGuid()   //ole32.dll  
   
  uses   ComObj,   ActiveX;  
   
  (*  
  //from   ComObj.pas  
  function   CreateClassID:   string;  
  var  
      ClassID:   TCLSID;  
      P:   PWideChar;  
  begin  
      CoCreateGuid(ClassID);  
      StringFromCLSID(ClassID,   P);  
      Result   :=   P;  
      CoTaskMemFree(P);  
  end;  
  *)  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      Caption   :=   CreateClassID;   //function   ComObj.CreateClassID  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
      vGUID:   TGUID;  
  begin  
      CoCreateGuid(vGUID);   //function   ActiveX.CoCreateGuid  
      Caption   :=   GUIDToString(vGUID);  
  end;  
   
  嘻嘻嘻   伴水   :)   版权所有   嘻嘻嘻嘻Top

11 楼zwjchina(蒲石)回复于 2002-07-26 09:46:29 得分 5

使用API函数   CoCreateGuidTop

相关问题

  • 中低手请进 !
  • 请进!请进?
  • 请进,请进....
  • llitcwl(中国龙) 请进
  • winder_008(风中追沙) 请进
  • itic(中国人) 请进!
  • 高手,请教中。详情请进
  • 请进
  • 请进。。。。。。。。。
  • 请进

关键词

  • udtguid
  • createclassid
  • vguid
  • cocreateguid
  • hex
  • 生成
  • guid
  • 方法
  • unsigned
  • len

得分解答快速导航

  • 帖主:fans2000
  • xzhongjin
  • AmpyShccl
  • AP
  • tangss
  • Kingron
  • jianling0538
  • tangss
  • AP
  • zswang
  • zswang
  • zwjchina

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo