Delphi:检查数组中的值(或变量的值)是否一次唯一

问题描述 投票:0回答:1

我需要检查某些变量的值是否唯一。这是 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;
arrays delphi unique
1个回答
0
投票

您可以自己编写,例如

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; 

然后您的代码片段将如图所示工作。

© www.soinside.com 2019 - 2024. All rights reserved.