Also vom Ablauf her müsste an dieser Stelle die Option mit "xoWriteBOM" benannt werden.
Das ist auch kürzer und für den menschlichen Verstand einfacher zu erfassen als negierte Aussagen.
Wenn man die Optionen ändert, müssten natürlich alle Stellen geprüft werden, die davon abhängen.
Insbesondere auch die Vorbelegung der Option.
Ich würde in der Methode mit einer Zwischenvariable arbeiten, was übersichtlicher ist:
Delphi-Quellcode:
if (xoWriteBOM in _Options) and (_Encoding <> xeUTF8) or AllowUTF8BOM) then
begin
sBuffer := XMLEncodingData[_Encoding].BOM;
if Length(sBuffer) > 0 then
_Stream.WriteBuffer(sBuffer[1], Length(sBuffer));
end;