RandSeed不工作?

时间:2012-04-12 11:11:49

标签: delphi

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;

2 个答案:

答案 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;