Sollte es hier nicht eine Compilerwarnung geben?
Die Zeile "slShow := TStringList.Create;" sollte vor dem try stehen.
Nein, das ist durchaus ein gängiges Muster und erst recht vom Compiler nicht zu beanstanden.
Beispiel:
Delphi-Quellcode:
procedure foo;
var
sl1, sl2: TStringList;
begin
sl1 := nil;
sl2 := nil;
try
// beliebiger code hier
sl1 := TStringList.Create;
// beliebiger code hier
sl2 := TStringList.Create;
// beliebiger code hier
finally
sl1.Free;
sl2.Free;
end;
end;
Wenn an irgendeiner Stelle von "beliebiger code hier" eine
Exception geworfen wird, oder mit Exit der Code verlassen werden soll, dann wird der finally-Block ohne Probleme abgearbeitet.