我试图将javascript代码转换为delphi,但我失败了......
这是javascript代码:
/* generate random progress-id */
var uuid = "";
var i;
for (i = 0; i < 32; i++) {
uuid += Math.floor(Math.random() * 16).toString(16);
}
这是我在delphi中的尝试:
function uid :string ;
var
i :integer;
begin
for I := 0 to 31 do begin
result := result + inttostr(floor(random * 16));
end;
end;
这是java脚本代码的结果
a638aa8f74e2654c725fd3cdcf2927d3
我在德尔福的知识有限,所以我不知道该怎么做......
我希望看到一些帮助并从中学习。
答案 0 :(得分:7)
从字面上看,这是函数在delphi中的外观:
function uid: String;
var
i: Integer;
begin
for i := 0 to 31 do
Result := Result + IntToHex(Random(16), 1);
end;
如果你需要一个较低的&#34; id&#34; - 使用 AnsiLowerCase 功能。
以正确的名义,不建议使用上面的自制方法 - 它只是javascript片段的字面翻译。它可能导致碰撞(和意志)。
建议使用以下功能:
function uid: String;
var
myGuid: TGUID;
begin
if Succeeded(CreateGUID(myGUID)) then
Result := Format('%0.8X%0.4X%0.4X%0.2X%0.2X%0.2X%0.2X%0.2X%0.2X%0.2X%0.2X',
[myGUID.D1, myGUID.D2, myGUID.D3,
myGUID.D4[0], myGUID.D4[1], myGUID.D4[2], myGUID.D4[3],
myGUID.D4[4], myGUID.D4[5], myGUID.D4[6], myGUID.D4[7]]) else
{TODO: some error processing - something bad happened}
end;
小写&#34; id&#34;的通知从上面也是有效的。