2015-04-17 129 views
0

我怎么正确地写:?如何检查数组是否包含特定值?

If number is different from Array[1] to Array[x-1] the begin...... 

其中number是一个整数,数组是整数数组从1到x

+2

我确定我建议你不要使用基于1的数组索引。请允许我重复这个建议。 –

+1

另外,'Array'在Delphi中不是一个有效的变量名。 –

+1

@AndreasRejbrand我已经告诉过菲利普,至少有一次之前:http://stackoverflow.com/questions/29594762/program-stops-after-reading-procedure-delphi –

回答

7

我相信你想要做的事,如果number未找到数组。然后,你可以做这样的:

NoMatch := true; 
for i := Low(MyArray) to High(MyArray) do 
    if MyArray[i] = number then 
    begin 
    NoMatch := false; 
    break; 
    end; 

if NoMatch then 
    DoYourThing; 

您可以创建一个数字是不是在阵列发现检查功能。然后,您可以在每次需要执行此检查时使用此功能。每一次,代码都会更具可读性。例如,你可以做这样的:

function IsNumberInArray(const ANumber: integer; 
    const AArray: array of integer): boolean; 
var 
    i: integer; 
begin 
    for i := Low(AArray) to High(AArray) do 
    if ANumber = AArray[i] then 
     Exit(true); 
    result := false; 
end; 

... 

if not IsNumberInArray(number, MyArray) then 
    DoYourThing; 

如果使用的是旧版本的Delphi,你必须begin result := true; break; end更换Exit(true)。在Delphi的新版本中,我想你也可以玩类似泛型的东西。

+0

伟大的思想家想象:D –

+2

@Jens除了你的代码与Andreas' –

相关问题