郁闷中,高手请进!................
请问在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




