我需要检查某些变量的值是否唯一。这是 4 个变量的示例/示例,但我正在寻找通用的东西,以便它适用于 3、5 等变量。我可以编写一个比较变量的代码,如下所示:
var
A, B, C, D : Integer;
begin
...
if(A <> B) and (B <> C) and (C <> B) and ... then
ShowMessage('are unique');
end;
是否有更短的方法来比较所有值?我的意思是:
var
A, B, C, D : Integer;
begin
...
if UniqueValues([A, B, C, D]) then
ShowMessage('are unique');
end;
您可以自己编写,例如
function UniqueValues( z : array of integer ) : boolean;
var
i : integer;
iTest : integer;
begin
if Length( z ) <= 1 then Result := TRUE
else
begin
Result := TRUE;
iTest := z[ Length( z ) - 1;
for i := 0 to Length( z ) - 2 do
begin
if z[i] = iTest then
begin
Result := FALSE;
exit;
end;
end;
// else
SetLength( z, Length( z ) - 1 ); // lose last value;
Result := UniqueValues( z );
end;
end;
然后您的代码片段将如图所示工作。