Delphi - 如何检查listBox是否包含指定的字符串?

4

我有一个带项目的列表框。我正在循环遍历列表框以逐个获取项目并将其分配给字符串变量。问题是,有没有一种方法可以检查列表是否包含指定的字符串?提前致谢。

1个回答

13

试着这样做:

if ListBox1.Items.IndexOf('yourString') > -1 then
begin
  //whatever you want to do if your listbox contains 'yourString'
end;

2
为什么要使用 >?文档中说:“如果字符串不在字符串列表中,IndexOf 将返回 -1。” =-1 的否定是 <>-1。现在,我知道这种使用 > 的方式被广泛采用,但它总让我感到奇怪。 - David Heffernan
4
这句话的意思是“这与语义意图无关。假设在确定对象在列表中后,第一件要做的事情就是继续索引它。如果通过任何方式'IndexOf'返回一个小于'-1'的值,是否有意义尝试对其进行索引?我认为上述问题是异常吞噬的一种形式,而不是违背语义纯度。区别在于计算机科学和软件工程。最严谨的方法可能是使用case>-1存在,=-1不存在,<-1异常,不应出现。” - J...
2
我更喜欢使用“>= 0”或“<0”。在与-1进行比较时,我更喜欢“<= -1”和“> -1”。如果由于任何错误或任何未来扩展而出现可能为-2的情况,我更愿意在安全方面出错并减少功能(假“未找到”)而不是假“找到字符串#-2”的一面。除此之外,这确实不应该有任何区别,即使在CPU级别上;-) - Arioch 'The
2
@DavidHeffernan,IndexOf没有“未找到值”的布尔属性。因此,我们必须处理整数变量的所有可能值。该死的是,这还包括由我们调用的过程更改的局部变量。 - Arioch 'The
3
@DavidHeffernan 在 Delphi 中,OneBasedStrings 也是一种约定。 - Sir Rufo
显示剩余17条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接