如题,
我写了一个,可是理论上还不是唯一的,有没有更好的办法呀:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,c:integer;
enchar : array[0..35] of char;
str:string;
begin
enchar[0] := '0';
enchar[1] := '1';
enchar[2] := '2';
enchar[3] := '3';
enchar[4] := '4';
enchar[5] := '5';
enchar[6] := '6';
enchar[7] := '7';
enchar[8] := '8';
enchar[9] := '9'; enchar[10] := 'A';
enchar[11] := 'B';
enchar[12] := 'C';
enchar[13] := 'D';
enchar[14] := 'E';
enchar[15] := 'F';
enchar[16] := 'G';
enchar[17] := 'H';
enchar[18] := 'I';
enchar[19] := 'J'; enchar[20] := 'K';
enchar[21] := 'L';
enchar[22] := 'M';
enchar[23] := 'N';
enchar[24] := 'O';
enchar[25] := 'P';
enchar[26] := 'Q';
enchar[27] := 'R';
enchar[28] := 'S';
enchar[29] := 'T'; enchar[30] := 'U';
enchar[31] := 'V';
enchar[32] := 'W';
enchar[33] := 'X';
enchar[34] := 'Y';
enchar[35] := 'Z';
memo1.Lines.Clear;
for i:= 1 to 1000 do
begin
str := floattostr(double(now));
c:=pos('.',str);
str := copy(str,1,c-1)+copy(str,c+1,length(str)-c);
for j:= 1 to 18-length(str) do
begin
Randomize;
str := str + enchar[Random(36)];
end;
memo1.Lines.Add(str);
end;
end;
我写了一个,可是理论上还不是唯一的,有没有更好的办法呀:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,c:integer;
enchar : array[0..35] of char;
str:string;
begin
enchar[0] := '0';
enchar[1] := '1';
enchar[2] := '2';
enchar[3] := '3';
enchar[4] := '4';
enchar[5] := '5';
enchar[6] := '6';
enchar[7] := '7';
enchar[8] := '8';
enchar[9] := '9'; enchar[10] := 'A';
enchar[11] := 'B';
enchar[12] := 'C';
enchar[13] := 'D';
enchar[14] := 'E';
enchar[15] := 'F';
enchar[16] := 'G';
enchar[17] := 'H';
enchar[18] := 'I';
enchar[19] := 'J'; enchar[20] := 'K';
enchar[21] := 'L';
enchar[22] := 'M';
enchar[23] := 'N';
enchar[24] := 'O';
enchar[25] := 'P';
enchar[26] := 'Q';
enchar[27] := 'R';
enchar[28] := 'S';
enchar[29] := 'T'; enchar[30] := 'U';
enchar[31] := 'V';
enchar[32] := 'W';
enchar[33] := 'X';
enchar[34] := 'Y';
enchar[35] := 'Z';
memo1.Lines.Clear;
for i:= 1 to 1000 do
begin
str := floattostr(double(now));
c:=pos('.',str);
str := copy(str,1,c-1)+copy(str,c+1,length(str)-c);
for j:= 1 to 18-length(str) do
begin
Randomize;
str := str + enchar[Random(36)];
end;
memo1.Lines.Add(str);
end;
end;
解决方案 »
- businessskinform使用skinbuilder
- DELPHI程序的框架问题
- 字符型转数字格式转不了如何解决??????
- 怎么安装第三方控件?
- 用MODEM(带FAX及语音功能)如何实现“先通话,再收或发传真”!
- 如何把一个edit.text的内容追加到sql server 数据库中,在线等待!!!
- 字段A20(是D日期型),怎样才能得到如VFP中的year(a20)=2002的SQL语句?
- 谁能介绍一个简单有效的字符串加密算法?
- 求音频会议程序
- yypp请进!分来了:supperlxf,我最高只能给26分了
- 为什么我安装了SpreadSheet 1.1.12后以前安装的DevExpressGrid4.5.2不能用了?运行Delphi时出错,该如何解决?
- 我想把焦点移到Button1上后按回车等于Click操作,应该怎么写呢?(新手,请多指点!)
begin
Randomize;
str := str + enchar[Random(36)];
sleep(10);//加这个
end;
memo1.Lines.Add(str);
sleep(10);//
str := floattostr(double(now));
c:=pos('.',str);
str := copy(str,1,c-1)+copy(str,c+1,length(str)-c); 这就行了,那就不用随机数了,反正也是用时间作种子吗
function GUIDToString(const ClassID: TGUID): string;
如果能限制其仅由服务器生成(并且服务器的时间能得到保证),而不依赖于客户端的话,倒是可以考虑用时间来解决;
你那个算法明显太简单了。
//=================================
class function SEnCoding.GetGUID: string;
var
guid:TGUID;
begin
CreateGUID(guid);
Result := GUIDToString(guid);
end;
//===================================
max := 10000;
try
for i:= 1 to max do
begin
db.FSQLQuery.SQL.Add('insert into sds_catalog( sc_ID) values('+quotedstr(SEnCoding.GetGUID)+')');
db.FSQLQuery.ExecSQL(true);
end;
finally
db.Free;
end;大家都试试,而且重码率比我写的那个简单算法还严重