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);