Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Не могу добавить запись в типизированный файл


Автор: TP@MB@Y 28.6.2006, 21:51
Код

AssignFile(f,FNAME);
Reset(f);
write(f,rec); 
CloseFile(f);


Выдает ошибку что доступ запрещен. 
Файл существует и не занят никаким приложением :-/ 

Автор: Mailman 28.6.2006, 22:04
Думаю тебе стоит несколько дополнить свой код ). Потому как то, что ты написал - верно. =)

Добавлено @ 22:04 
А ваще, ты не ответил, РАЗРЕШЁН ли доступ ;) 

Автор: Yanis 28.6.2006, 22:06
Цитата(TP@MB@Y @  28.6.2006,  22:51 Найти цитируемый пост)
Файл существует и не занят никаким приложением :-/

Уверен? Проверь ещё чему равно FileMode. 

Автор: Palladin 28.6.2006, 22:39
Ну у тебя ошибок здесь нет, может просто в этой строке 
assign(f,fname);
у тебя путь в fname неправильный указывается, попробуй по топорному путь прописать
assign(f,'F:/твоя папка/тип.txt');

и посмотри будут ошибки или нет smile  

Автор: TP@MB@Y 28.6.2006, 22:53
Mailman,  ээм, а как дополнить то? ааа, я забыл в посте написать еще Seek(f,filesize(f)); (по памяти писал)
делаю я вот так:
Код

 AssignFile(f,FNAME);
 Reset(f);
 Seek(f,filesize(f));
 Write(f,info);
 CloseFile(f);



RooR,  путь правильно прописан, т.к. если делать rewrite, то запись проходит успешно)

Yanis, да точно не занят.  Но в крайнем случае проверю так как ты написал smile 

Автор: Yanis 28.6.2006, 23:03
TP@MB@Y
Проверь атрибуты у файла. Очевидно, что ты что то неправильно делаешь. Вот только что.... 

Автор: Guedda 28.6.2006, 23:18
Цитата(Yanis @  29.6.2006,  00:03 Найти цитируемый пост)
Вот только что....  

Ты открываешь файл на чтение:
Цитата(TP@MB@Y @  28.6.2006,  23:53 Найти цитируемый пост)
Reset(f);

И пишешь в него:
Цитата(TP@MB@Y @  28.6.2006,  23:53 Найти цитируемый пост)
Write(f,info);

Так нельзя...

Добавлено @ 23:19 
Я не помню про типизированные, но обычные файл для дозаписи открываются обычным Append 

Автор: Yanis 28.6.2006, 23:24
Цитата(Guedda @  29.6.2006,  00:18 Найти цитируемый пост)
Ты открываешь файл на чтение:

Цитата(Guedda @  29.6.2006,  00:18 Найти цитируемый пост)
И пишешь в него:

Цитата(Guedda @  29.6.2006,  00:18 Найти цитируемый пост)
Так нельзя...

smile
Не в обиду сказано, но это жара так на тебя влияет? smile 
Цитата
procedure Reset(var F [: File; RecSize: Word ] );

Description
In Delphi code, Reset opens the existing external file with the name assigned to F using the mode specified by the global FileMode variable.


Добавлено @ 23:25 
Цитата(Guedda @  29.6.2006,  00:18 Найти цитируемый пост)
Я не помню про типизированные, но обычные файл для дозаписи открываются обычным Append  

Append опять же как гласит справка, только для текстовых файлов. 

Автор: Guedda 28.6.2006, 23:28
Цитата(Yanis @  29.6.2006,  00:24 Найти цитируемый пост)
но это жара так на тебя влияет?

Да. Жара... Спутал с Pascal.  

Автор: Yanis 28.6.2006, 23:30
Цитата(Guedda @  29.6.2006,  00:28 Найти цитируемый пост)
Да. Жара... Спутал с Pascal.  

Дык в паскале то она ту же самую функцию выполняет smile 

Автор: Palladin 28.6.2006, 23:33
Код

AssignFile(f,FNAME);
 Reset(f);
 Seek(f,filesize(f)); //я точно не помню, но кажется эта строка вообще не нужна, т.к. функция reset(f) и так поставит указатель в конец файла
 Write(f,info); //что такое info????? может пробуй делать запись из этого инфо посимвольно ;-) 
 CloseFile(f); //только открыл, а уже закрываеш :D 
 

Автор: Marriage 28.6.2006, 23:39
1)Файл этот открыл в своей проге и не закрыл
2)Файл открыт другим процессом.
Все вродебы. Что за файл то хоть ??? 

Автор: Yanis 28.6.2006, 23:41
Цитата(RooR @  29.6.2006,  00:33 Найти цитируемый пост)
т.к. функция reset(f) и так поставит указатель в конец файла

Остаётся мне сегодня только цитировать....
Цитата
procedure Reset(var F [: File; RecSize: Word ] );
...
The current file position is set to the beginning of the file.
...
 

Автор: TP@MB@Y 30.6.2006, 18:12
Yanis,  спасибо за мысль насмчет filemode. Дело было в нем. Я ручками перед reset присвоил filemod:=2 и все окей! smile 

Автор: Yanis 30.6.2006, 22:16
TP@MB@Y
Значит "кто-то" её меняет. По умолчанию она должна быть равна 2. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)