anchor.diff:  
     if FSaveDialog.Execute then
     begin
  +
  +    if Uppercase(ExtractFileExt(FSaveDialog.FileName)) <> Uppercase(FSaveDialog.DefaultExt) then
  +    begin
  +      if not ConfirmDiscordedFileExt (FSaveDialog.DefaultExt) then
  +        exit;
  +    end;
  +
       if FileExists(FSaveDialog.FileName) then
       begin
         if not ConfirmFileOverwrite then
  
positive.code:   SUnableToWriteFileMessage = 'Unable to write file. Check if the file is open by another application. If so, close it and run this command again. Detail:';
    SConfirmFileOverwriteCaption = 'Confirm';
    SConfirmFileOverwriteMessage = 'The selected file already exists. Overwrite it?';
    SWantToOpenFileMessage = 'Do you want to open the file?';
    SConfigureCommandHint = 'Configure...';
    SConfigureGridCommandHint = 'Configure grid...';
  
negative.code:   Result := MessageDlg(SConfirmFileOverwriteCaption, SConfirmFileOverwriteMessage, mtConfirmation, mbYesNo, 0) = mrYes;
  end;
  
  function TmAbstractGridHelper.ConfirmDiscordedFileExt(const aFileExt: String): boolean;
  begin
    Result := MessageDlg(SConfirmDiscordedFileExtCaption, Format(SConfirmDiscordedFileExtMessage, [aFileExt]), mtConfirmation, mbYesNo, 0) = mrYes;
  end;
  
  procedure TmAbstractGridHelper.ExportGridToFile(aFileType: String);
  var
    fs : TFileStream;
  