如何获得一个极难重复的字串?(100分)

  • 主题发起人 主题发起人 红尘过客
  • 开始时间 开始时间

红尘过客

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi 里是否有如 FOXPRO 的 SYS(2015) 唯一变量名的函数?
要求不超过16位,多台机器同时或分时操作也不重复。希望有具体的例子。
 
依照下面的程序取得临时文件名,再把各台机器的不同标识号加入。

procedure TForm1.Button1Click(Sender: TObject);
Var
Buf:string[40];
Pbuf:Pchar;
TmpFileName:String[40];
PFile:PChar;
begin
PBuf:=@buf;
PFile:=@tmpfileName;
//获取临时目录名,即DOS环境变量Temp所指向的目录
GetTempPath(40,Pbuf);
Edit1.Text:=String(PBuf);
GetTEmpFileName(PBuf,'',0,PFile);
Edit2.Text:=String(PFile);

end;
 
可以用微软生成GUID的方法
 
wuyi:你的临时文件名可以保证生成时在本机唯一,但是以后生成的可以
保证唯一吗?在其他机器上可以保证唯一吗?所以不可取!

唐晓锋:Random函数可以保证唯一吗????

tqz的提议是可行的,GUID生成的方法是使用CoCreateGuid函数,
GUID由与时间相关的随机数、与机器硬件相关的数据等等组成,
绝对唯一
 
GUID就是太长了一点,其他挺好
这是最简便的方法了,建议采用
 
用随机数 randomsize ,再用random,再检测如果有此文件,再重新来一遍,一定可搞定,

 
计算机有一些东西是机器独特的,唯一的标识,比如网卡MAC地址
,CPU ID号码等, 这些转换为字符串后再与一些流水号组合,比如
将时间(浮点数)转换为字符串, 一定是唯一的
 
多人接受答案了。
 
后退
顶部