Hi,
ich habe mir für ein Projekt eine Klasse geschrieben, die eine
TIdMessage auf einige Dinge überprüfen soll. Genau gekommen ist es eine Filterklasse. Das Problem ist nun, dass ich verschiedene Kriterien in Form eines Sets habe und ich jetzt irgendwie bei der Ergebnis Berechnung dieses Set einbeziehen muss.
Derzeit sieht das ganze so aus:
Delphi-Quellcode:
function TFilterClass.Match(aMessage: TIdMessage): boolean;
var
Result1, Result2, Result3, Result4: boolean;
begin
Result := false;
// Einzelne Such-Felder überprüfen
if ([sSubject] in FSearchIn) then begin // Betreff
Result1 := { Überprüfe... };
end;
if ([sFrom] in FSearchIn) then begin // Absender
Result2 := { Überprüfe... };
end;
if ([sTo] in FSearchIn) then begin // Empfänger
Result3 := { Überprüfe... };
end;
if ([sBody] in FSearchIn) then begin // Nachrichteninhalt
Resul4 := { Überprüfe... };
end;
Result := { ENDGÜLTIGES ERGEBNIS }
end;
Mein Problem ist beim endgültigen Ergebnis. Denn ich kann nicht einfach die ganzen einzelnen Results mit
and verknüpfen, da ich ja dann z.B. haben (true, true, false, false), obwohl die letzten beiden Results nicht berücksichtigt werden können, da sie nicht in dem
FSearchIn-Set vorhanden sind. D.h. die Nachricht würde rausfallen, obwohl eigentlich die Nachricht auf den Filter zutrifft.
Kann mir da jemand einen Vorschlag machen bzw. die Erleuchtung bringen?
Chris