Genau deshalb habe ich mir bei solchen Ketten angewöhnt das wie begin/end zu behandeln:
Delphi-Quellcode:
function TExemplareVST.IstGefunden(const AData: TZeile): Boolean;
var
PufferZeile : TExemplarZeile;
begin
PufferZeile := AData as TExemplarZeile;
Result := ((FSuchText = '') or
((Assigned(PufferZeile.Buch)) and (estoBuchtitel in FSuchTextOptionen) and (Pos(LowerCase(FSuchText), LowerCase(PufferZeile.Buch.Titel)) >= 1)) or
((estoBeschreibung in FSuchTextOptionen) and (Pos(LowerCase(FSuchText), LowerCase(PufferZeile.Bezeichnung)) >= 1))
) and
((FSuchBuchIDs.Count = 0) or ((Assigned(PufferZeile.Buch)) and (FSuchBuchIDs.IndexOf(PufferZeile.Buch.ID) >= 0))) and
((FSuchPersonenIDs.Count = 0) or ((Assigned(PufferZeile.Ausgeliehen)) and (FSuchPersonenIDs.IndexOf(PufferZeile.Ausgeliehen.ID) >= 0))) and
(
(FSuchAusgeliehenTyp = [esatNurAusgeliehene, esatKeineAusgeliehene]) or
(
([esatNurAusgeliehene] = FSuchAusgeliehenTyp) and (Assigned(PufferZeile.Ausgeliehen))
) or
(
([esatKeineAusgeliehene] = FSuchAusgeliehenTyp) and (not Assigned(PufferZeile.Ausgeliehen))
)
);
end;
Wobei das nicht 100% konsequent ist, aber die Ausdrücke in den Zeilen 7, 8, 10 und 11 gehören "zusammen"
MfG
xZise