Вопрос, поставленный пользователем, заключается в необходимости отображения сообщения в том случае, если в списке строк, представленных в компоненте Memo, отсутствует упоминание фразы "Olive Oil". Для решения этой задачи необходимо изменить логику обработки строк, чтобы после прохождения всего списка строк можно было определить, что упоминание "Olive Oil" отсутствует, и на основе этого показать соответствующее сообщение.
Решение проблемы
Для начала, рассмотрим исходный код процедуры, которая должна обрабатывать строки Memo:
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!');
// Выход из цикла, так как фраза найдена
Exit;
end;
end;
// Здесь мы оказываемся, если ни одна строка не содержит 'Olive Oil' (из-за Exit)
ShowMessage('Olive Oil does not exist!');
end;
В данном коде, как только строка с упоминанием "Olive Oil" найдена, выполняется выход из цикла с помощью инструкции Exit. Если цикл завершается без выполнения Exit, это означает, что упоминание отсутствует, и отображается соответствующее сообщение.
Альтернативный подход
Для улучшения читаемости и возможности повторного использования кода, можно определить вспомогательные функции. Например, функция IndexOfLineContaining для поиска строки с заданным текстом и функция HasLineContaining для проверки наличия такой строки:
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);
Result := -1;
end;
function HasLineContaining(const Text: String; Lines: TStrings): Boolean;
begin
Result := (IndexOfLineContaining(Text, Lines) > -1);
end;
Теперь, чтобы отобразить сообщение, достаточно использовать функцию HasLineContaining:
if HasLineContaining('Olive Oil', Memo1.Lines) then
ShowMessage('Olive Oil exist!')
else
ShowMessage('Olive Oil does not exist!');
Заключение
В данной статье был рассмотрен пример реализации на языке Object Pascal (Delphi), который позволяет отображать сообщение в зависимости от наличия или отсутствия заданной фразы в списке строк. Представлены два варианта решения: базовый и с использованием вспомогательных функций для улучшения структуры кода.
Ответ на вопрос о реализации отображения сообщения при отсутствии упоминания 'Olive Oil' в списке строк компонента `Memo` в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS