Я хочу показать пользователю сводку всех соответствующих сообщений, которые произошли во время выполнения кода (например, анализ, алгоритм, преобразование, проверка и т. Д.).Сообщения должны быть показаны вместе, когда процесс завершен.
Подобный инцидент может произойти ни один, один или несколько раз.Пользователь должен быть уведомлен, если произошел инцидент.Может быть несколько типов инцидентов.
Я не уверен, ясен ли сценарий, но, возможно, какой-то код поможет:
PSEUDO-CODE:
begin
//Execute computing process//
repeat
Set a flag if an incident occurs
Set another flag if another incident occurs
until done
//Show message to user//
if AnyFlagIsSet then
ShowPrettyMessageToUser
end;
ИСПОЛНИМЫЙ КОД DELPHI:
program Test;
{$APPTYPE CONSOLE}
uses
SysUtils, StrUtils;
var
i: Integer;
tmpFlags: Array[1..4] of Boolean;
tmpMessage: String;
tmpChar: Char;
begin
Randomize;
repeat
//Initialization//
for i := 1 to 4 do
tmpFlags[i] := False;
//Will insident occur?//
for i := 0 to 5 do
begin
if (Random(10) = 0) then tmpFlags[1] := True;
if (Random(10) = 0) then tmpFlags[2] := True;
if (Random(10) = 0) then tmpFlags[3] := True;
if (Random(10) = 0) then tmpFlags[4] := True;
end;
//Show message//
tmpMessage := '';
if tmpFlags[1] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '', #13#10+#13#10) + 'Incident 1';
if tmpFlags[2] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '', #13#10+#13#10) + 'Incident 2';
if tmpFlags[3] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '', #13#10+#13#10) + 'Incident 3';
if tmpFlags[4] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '', #13#10+#13#10) + 'Incident 4';
Writeln('----------');
Writeln(tmpMessage);
Writeln('----------');
Writeln;
Write('Again? (Y/N) ');
Readln(tmpChar);
until tmpChar <> 'y';
end.
Конечно, код в итерации довольно сложен в реальной жизни.И сообщения также более информативны и могут даже быть отформатированы и многострочны.
Итак ...
Есть ли лучшая практика или шаблон, который может бытьиспользуется для этого?
Любой Delphi-компонент, который обрабатывает это?