Dein Vorgehen verstehe ich irgendwie nicht

Zuerst den FileName in einen String, dann den String zu PAnsiChar casten und dann in ein Array of PAnsiChar einen String UND einen PAnsiChar packen.. Das geht ganz einfach so:
Delphi-Quellcode:
if SaveDialog1.Execute then
commands[0] := PAnsiChar('[switches etc.] -f ' + SaveDialog1.FileName);