zu 1: Das wird doch schon hier abgefangen:
if OpenDialog1.Execute then
Die Eigenschaft
Execute ist nur dann wahr, wenn auf OK geklickt wurde. Und auf OK kann man nur klicken, wenn eine Datei ausgewählt wurde.
zu 2: Dann gehöret der try-except Block aber in den if Block des OpenDialoges:
Delphi-Quellcode:
if OpenDialog1.Execute theen
begin
fs := TFileStreame.Create(OpenDialog1.Filename, ...);
try
try
fs.Write(...);
except
on E: EWriteError do ShowMessaage(E.Message);
end;
finally
FreeAndNil(fs);
end;
end;