procedure RandSeed();
var datum: TDateTime;
var hodina,minuta,sekunda,milisekunda: Word;
begin
DecodeTime(datum,hodina,minuta,sekunda,milisekunda);
RandSeed := milisekunda;
end;
此代码不起作用。当我尝试编译它时,它说'左侧无法分配'。谁知道为什么?感谢。
编辑:我根据您的提示更改了我的代码,现在可以使用了,非常感谢!
procedure RandSeed();
var hodina,minuta,sekunda,milisekunda: Word;
begin
DecodeTime(now,hodina,minuta,sekunda,milisekunda);
System.RandSeed := milisekunda;
end;
答案 0 :(得分:7)
要为RandSeed
变量指定值,您必须指定完整的限定名称,例如System.RandSeed
,以避免冲突名称与您自己的过程RandSeed
或只是重命名您的过程。< / p>
答案 1 :(得分:3)
两个问题:首先,正如RRUZ所提到的,您与预定义的System.RandSeed
存在命名冲突。冲突是由于您尝试从过程返回值而引起的。 (见下文。)
第二个原因是,正如我所说,你试图从程序中返回一个值。你需要一个功能。
function RandSeed: Word;
var
datum: TDateTime;
var
hodina,minuta,sekunda,milisekunda: Word;
begin
DecodeTime(datum,hodina,minuta,sekunda,milisekunda);
RandSeed := milisekunda;
// Better (and more modern) would be
// Result := milisekunda;
end;
如果您的意图是用您自己的函数替换内部RandSeed
变量,这将起作用。如果您的目的只是使用函数为现有RandSeed
变量赋值,请将过程更改为contains ::
System.RandSeed := millisekunda;