| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Работа с файлами |
| Автор: kindDevil 21.8.2006, 00:46 | ||||||
| при чтении из типизированного файла, читается строковое поле записи. при сохранении делается rewrite файла с именем соотв. этому строковому полю. если редактор открывает уже сохраненный файл, а затем пытается его сохранить под тем же именем, то выдается ошибка Invalid file name. в чем бага?
//процедура чтения:
процедура записи, после которой выдается ошибка, если сохраняется в уже существующий файл.
|
| Автор: Fedia 21.8.2006, 01:01 | ||
| Перед попробуй добавить:
|
| Автор: Alexeis 21.8.2006, 01:56 |
| kindDevil, скорее всего файл просто занят другим процессом, потому как перезапись существуещего файла при помощи rewrite допустимая операция. |
| Автор: SlaUr 21.8.2006, 05:15 | ||
| Потому что выдается ошибка Invalid file name я бы посоветовал делать полный путь к файлу. Если начальная директория это директория программы то это можно сделать так:
можно еще глянуть что находится в k.name (showmessage(k.name)) |
| Автор: Fedia 21.8.2006, 05:38 | ||
SlaUr, скорее всего ты прав, только тогда уж проще так:
Смущает только, что ошибка появляется в случае, если файл с таким именем уже существует. |
| Автор: Fedia 21.8.2006, 09:00 | ||
У меня как-то были глюки с относительными путями, поэтому больше склоняюсь к варианту SlaUr. Просто в вопросе есть противоречия: с одной стороны не может записать в уже существующий файл, а с другой: ошибка "Invalid file name". Правду скоро узнаем |
| Автор: Spectral 21.8.2006, 09:40 | ||
Я бы сделал вот так:
Или через паскалевские BlockRead/BlockWrite. |
| Автор: kindDevil 21.8.2006, 19:08 |
| SlaUr спасибо огромное. очень помог. но действительно странно: если я делаю новый файл, то сохраняется великолепно, даже без извлечения пути к директории с программой. но дописал нахождение полного пути и все работает спасибо всемм. |
| Автор: AugMaster 21.8.2006, 20:04 |
| хе..я кажись понял багу....ты когда опендиалог делаешь то автоматом делаешь чейндждир...если ты просто сохраняешь файл(без открытия) то путь сохранения = ExeDir+Weapon\...а вот если ты опендиалог файла выполнил в папке Weapon то туда автоматом происходит ChDir и затем пытаясь сохранить файл, ты его уже сохраняешь не в ExeDir+Weapon а в ExeDir+Weapon+Weapon...а вообще действительно не пользуйся относительной адресацией а полной...сам над этим часа 3 помучался пока понял причину. |