Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 17:44   #1
sqr
Пользователь
 
Аватар для sqr
 
Регистрация: 26.10.2011
Сообщений: 49
По умолчанию Ошибка перезаписи в файл

Вылетает ошибка во время выполнения программы при попытке перезаписать файл: File Access Denied
Останавливается на строчке rewrite(fl);
Процедура которая создает типизированный файл:
Код:
procedure Tform1.RecFile;
begin
GetDir(3, DirName); //находим адрес диска
//проверяем существует ли файл
if not FileExists(DirName+'records.sndrcd') then
begin
assignfile(fl,DirName+'records.sndrcd');
rewrite(fl);
for i:=0 to 9 do
  begin
    mr[i].name:='Игрок';
    mr[i].score:=0;
    write(fl,mr[i]);
  end;
FileSetAttr(DirName+'records.sndrcd',FaHidden);
closefile(fl);
end
//Если файл существует, тогда считываем с него информацию
else begin
assignfile(fl,DirName+'records.sndrcd');
reset(fl);
for i:=0 to 9 do
  read(fl,mr[i]);
closefile(fl);
end;
end;
Процедура перезаписи этого же файла
Код:
procedure TForm1.RecSave;
begin
assignfile(fl,DirName+'records.sndrcd');
rewrite(fl);
for i:=0 to 9 do
    write(fl,mr[i]);
FileSetAttr(DirName+'records.sndrcd',FaHidden);
closefile(fl);
end;
Everybody lies.

Последний раз редактировалось sqr; 15.03.2012 в 18:23.
sqr вне форума Ответить с цитированием
Старый 15.03.2012, 18:26   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

как структуру mr описал?
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 15.03.2012, 18:35   #3
sqr
Пользователь
 
Аватар для sqr
 
Регистрация: 26.10.2011
Сообщений: 49
По умолчанию

type Trec=record
name:string[30];
score:integer;
end;

var
mr:array[0..9]of Trec;
Everybody lies.
sqr вне форума Ответить с цитированием
Старый 15.03.2012, 19:25   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

я ошибки не вижу... если только попытка писать в корень системного диска или иное системное место
не люблю я паскалевский file, современней на TFileStream
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 15.03.2012, 19:29   #5
sqr
Пользователь
 
Аватар для sqr
 
Регистрация: 26.10.2011
Сообщений: 49
По умолчанию

Разобрался уже. Файл невозможно было изменить из за атрибута "скрытый".
Решил данную проблему путем изменения атрибута на обычный на время записи в файл, потом опять устанавливается скрытый.
Everybody lies.
sqr вне форума Ответить с цитированием
Старый 15.03.2012, 19:36   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

тоже самое на стреме
и хаден никак не влияем
Код:
type
  Trec=packed record
    name:string[30];
    score:integer;
  end;
const
  RecFileName='records.sndrcd';
var Mr:array[0..9]of Trec;

procedure Save(const Dir:string);
var Stream:TFileStream;
begin
  Stream:=TFileStream.Create(Dir+RecFileName,fmCreate);
  try
    Stream.WriteBuffer(Mr,SizeOf(Mr));
  finally
    Stream.Free;
  end;
  FileSetAttr(Dir+RecFileName,FaHidden);
end;

procedure Load(const Dir:string);
var
  Stream:TFileStream;
  i: integer;
begin
  if FileExists(Dir+RecFileName) then
  begin
    Stream:=TFileStream.Create(Dir+RecFileName,fmOpenRead);
    try
      Stream.ReadBuffer(Mr,SizeOf(Mr));
    finally
      Stream.Free;
    end;
  end else
  begin
    for i:=low(mr) to high(mr) do
    begin
      mr[i].name:='Èãðîê';
      mr[i].score:=0;
    end;
    Save(Dir);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Load('D:\');
end;
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 15.03.2012 в 19:40.
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить в файл строку(ошибка) MyLastHit Общие вопросы Delphi 11 14.01.2011 11:40
В чём ошибка??? (ФАЙЛ) Telec Помощь студентам 9 11.05.2010 23:08
2 лишних байта при построковой перезаписи Alex Cones Общие вопросы Delphi 8 21.03.2010 18:15
ошибка в сохранении в файл Лонли-Локли Общие вопросы Delphi 1 27.08.2009 14:51
Ошибка записи в файл nisoldatov Софт 2 31.03.2009 02:24