title: Saving record to file Error 'file access denied'
body: <p>When I run my code an select the save button which i created. The record doesnt save but i get an error 'file access denied'.</p>
  
  <p>my code :</p>
  
  <p>The code i split into 2 units MainUnit and AddTenantUnit.</p>
  
  <p>I think the problem lies within the procedure at the end of the code. If you scroll down I made it clear which procedure (<code>TAddTenantForm.SaveButtonClick</code>).</p>
  
  <pre><code>unit MainUnit;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
  
  type
    TMainForm = class(TForm)
      AddTenantButton: TButton;
      procedure FormCreate(Sender: TObject);
      procedure AddTenantButtonClick(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
    TTenantRecord = record
      FirstName : string[20];
      LastName : string[20];
    end;
  
  var
    MainForm: TMainForm;
    Tenant : TTenantRecord;
    TenantFile : file of TTenantRecord;
  
  implementation
  
  uses AddTenantUnit;
  
  {$R *.dfm}
  
  procedure TMainForm.AddTenantButtonClick(Sender: TObject);
  begin
    AddTenantForm.ShowModal;
  end;
  
  procedure TMainForm.FormCreate(Sender: TObject);
  begin
    assignfile (TenantFile, 'Tenant.dat');
    if not fileexists ('Tenant.dat')
    then
      begin
        rewrite (TenantFile);
        closefile (TenantFile)
      end
    {endif};
  end;
  
  end.
  
  
  unit AddTenantUnit;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, MainUnit, StdCtrls;
  
  type
    TAddTenantForm = class(TForm)
      MainFormButton: TButton;
      FirstNameLabel: TLabel;
      FirstNameEdit: TEdit;
      LastNameLabel: TLabel;
      LastNameEdit: TEdit;
      SaveButton: TButton;
      ClearButton: TButton;
      procedure SaveButtonClick(Sender: TObject);
      procedure LastNameEditChange(Sender: TObject);
      procedure ClearButtonClick(Sender: TObject);
      procedure FirstNameEditChange(Sender: TObject);
      procedure MainFormButtonClick(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    AddTenantForm: TAddTenantForm;
  
  implementation
  
  {$R *.dfm}
  
  procedure TAddTenantForm.MainFormButtonClick(Sender: TObject);
  begin
    AddTenantForm.Close;
  end;
  
  procedure TAddTenantForm.FirstNameEditChange(Sender: TObject);
  begin
    Tenant.FirstName := FirstNameEdit.Text;
  end;
  
  procedure TAddTenantForm.ClearButtonClick(Sender: TObject);
  begin
    FirstNameEdit.Clear;
    LastNameEdit.Clear;
  end;
  
  procedure TAddTenantForm.LastNameEditChange(Sender: TObject);
  begin
    Tenant.LastName := LastNameEdit.Text;
  end;
  
  // This is where the problem lies when I run this piece of
  // code. This represents the Save button being clicked.
  procedure TAddTenantForm.SaveButtonClick(Sender: TObject);
  begin
    assignfile (TenantFile, 'Tenant.dat');
    write(TenantFile, Tenant);
    closefile (TenantFile);
  end;
  
  
  end.
  </code></pre>