Ich gehe mal in Erbsenzählermodus:
- Das hier
Delphi-Quellcode:
if Assigned(FActions) then
FActions.Free;
ist gleichbedeutend mit
Delphi-Quellcode:
if Assigned(FActions) then
if Assigned(FActions) then
FActions.Destroy;
.
- In GetActionCount: Ich hab mir deinen Code nicht detailiert angeschaut, aber in jedem "normalen" Code, der mir untergekommen ist, sind IrgendWas.Count und Length(IrgendWas) moralisch äquivalent. Die - 1 sollte wohl weg.
- SetLength(FActions, Length(FActions));
bewirkt nichts.
Grüße,
Uli.
Edit: Noch eine Idee: Die generische Version von TStringPair würde ich rausschmeißen und immer die record-Version nehmen. Und aus dem nichtgenerischen TFileTypeActions könnte man eine Klasse mit zu TDictionary<string, string> quellcode-kompatiblem Interface machen. Dann hättest du bestimmt weniger $IFDEFs und die alle an einer Stelle.