(Pascal) работа с файлами

shs777

Турист
Регистрация
13 Дек 2006
Сообщения
30
Реакции
1
Credits
38
Доброго времени суток.

написал я procedure shs_fileexists;
var
f2:textfile;
begin
assignfile(f2,'currentprj.txt');
if not fileexists('currentprj.txt') then
begin
Rewrite(f2);
Append(f2);
CloseFile(f2);
end;
end;

Вчера заметил багу. Файл currentprj.txt существовал и был наполнен информацией. А сегодня ____ и нету информации в филе.
Не могу понять в чем дело. В моей программе только эта процедура может сей файл перезаписать, но условие же не должно было выполниться потому что файл существовал. Непонимаю почему он перезаписался.

Есть версия что он перезаписался из-за того что хранится в директории Application Data, но это маловероятно. Директория как директория...

Помогите понять ошибку. Спасибо.
 

Ognev

ex-Team DUMPz
Местный
Регистрация
20 Авг 2004
Сообщения
2,079
Реакции
908
Credits
0
Конкретно этот кусок кода ничего с уже существующим файлом не делает. Либо баг в другом месте, либо в исходниках этот кусок записан как-то иначе )))
 

shs777

Турист
Регистрация
13 Дек 2006
Сообщения
30
Реакции
1
Credits
38
в остальных частях программы только вызовы на сохранение этого файла(сначала вызов этой процедуры, затем сохранение). Может из-за того, что я рано применяю assignfile(f2,'currentprj.txt'); к нему блокируется доступ и программе кажется что его нет? А т.к он уже ассоциирован с переменной, то поэтому и прокатывает исключение? Так быть не может?
 

Ognev

ex-Team DUMPz
Местный
Регистрация
20 Авг 2004
Сообщения
2,079
Реакции
908
Credits
0
Как написано в хелпе, assignfile лишь инициализирует переменную и асоциирует ее с определенным файлом. Больше ничего. Единственное, есть в хелпе такая строчка:
Do not use AssignFile on a file variable that is already open.
Других ограничений вроде нет. Хелп к Delphi 2007.
 

shs777

Турист
Регистрация
13 Дек 2006
Сообщения
30
Реакции
1
Credits
38
Нашел ошибку. Действительно данная процедура не виновата. У меня баг вылазил при старте программы. Я не все переменные инициализировал. А проге пофиг если файл есть она его перезапишет\сделает бекап. А на самом деле при старте текстовые поля все пустые. Таким же становился файл бекапа :)

Короче пофиксил, а Вам спасибо за помощь.
 
Последнее редактирование модератором: