Der Grund für die Warnung erscheint mir Logisch, da für Delphi ja nicht Sichergestellt ist, das die Variable Wirklich Initialisiert ist, von der Logik her jedoch schon, da der Modultyp währenddessen nicht verändert wird.
Bekomme ich die Warnung irgendwie weg?
Vielleicht am Einfachsten diesen Teil ...
// ... Mache was mit dem gewählten Modul
in eine Procecedure auslagern und dann die beiden Case-Statements zusammenfassen, so dass man dort jeweils nur das im Case-Zweig erzeugte Objekt freigibt.
Delphi-Quellcode:
case ... of
bla: begin
Var1 := Typ1.Create;
try
MachWasMit(Var1);
finally
Var1.Disconnect;
Var2.Free;
end;
end;
blub: begin
Var2 := Typ2.Create;
try
MachWasMit(Var2);
finally
Var2.Disconnect;
Var2.Free;
end;
end;
end;
Das setzt natürlich voraus, dass Typ1 und Typ2 einen gemeinsamen Vorfahren haben.
Wobei, wenn das der Fall ist, kann auch nur eine Variable von diesem gemeinsamen Typ verwenden und sich das zweite Case-Statement komplett schenken.