vielleicht stehe ich ja nur unglaublich auf dem Schlauch aber müsste in dem Codebeispiel "Assigned(slShow)" nicht false sein?
Eine (non-managed) lokale Variable ist nicht initialisiert. Das gilt auch für Object-Variablen; die kann auf alles mögliche zeigen.
Wenn nein: Wie prüfe ich denn richtig, ob slShow freigeben kann/muss?
Deswegen sollte slShow vor dem try auf nil gesetzt werden.
die Zeile "if Assigned(slShow) then" wird ja nur ausgeführt, weil das "exit" zu einer
Access Violation führt!
Der finally-Abschnitt wird immer ausgeführt - auch bei einem Exit innerhalb eines try-finally.