Die Zeile
Delphi-Quellcode:
with SaveDialog1 do begin
FileName:=SaveDialog1.FileName;
ist ja ziemlich sinnlos, oder? Du weißt einer Variablen sich selbst zu, also X=X.
Man könnte FileName schon vor dem Execute etwas zuweisen, um z.B. einen Vorgabenamen für den Savedialog einzustellen.
Ansonsten ist der Abbruch natürlich vorgesehen, die Function Execute hat dann den Wert False und deine if-Bedingung ist nicht erfüllt.
Wie lautet denn übrigens der Fehler?