procedure TForm1.bFAT1Click(sender: TObject);
var
FAT: Integer;
begin
for FAT := 0 to memo1.lines.Count - 1 do
begin
if AnsiContainsStr(memo1.lines[FAT], 'Olive Oil') then
begin
ShowMessage('Olive Oil exist!');
end;
end;
// But how to show message if integer is empty?
end;
如果没有包含'橄榄油'的行,我想做点什么。怎么做?
答案 0 :(得分:2)
您需要的是Exit
语句,以便在找到匹配元素后立即离开该过程。这样,当你到达程序的最后,你知道你没有找到匹配的元素:
for FAT := 0 to memo1.lines.Count - 1 do
begin
if AnsiContainsStr(memo1.lines[FAT], 'Olive Oil') then
begin
ShowMessage('Olive Oil exist!')
Exit; // we can stop here since we found it
end;
end;
// we only come here if no line contained 'Olive Oil' (because of the EXIT)
ShowMessage('Olive Oil does not exist!');
编辑 :(受@David启发)最好将逻辑与UI /显示分开(例如ShowMessage)。为此,您可以定义如下函数:
function IndexOfLineContaining(const Text : String; Lines : TStrings) : Integer;
begin
for Result := 0 to Lines.Count - 1 do
if AnsiContainsStr(Lines[Result], Text) then
Exit;
Result := -1;
end;
最重要的是,你可以轻松定义一个布尔函数:
function HasLineContaining(const Text : String; Lines : TStrings) : Boolean;
begin
Result := (IndexOfLineContaining(Text, Lines) > -1);
end;
并使用它来显示消息:
if HasLineContaining('Olive Oil', Memo1.Lines) then
ShowMessage ('foo')
else
ShowMessage ('bar');
我建议您在术语上稍作一些,以使您的问题更加清晰。整数不能为空,句子“如果[FAT]没有找到'橄榄油'就行了。” FAT
是一个整数是没有任何意义的。