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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2014, 12:39   #1
Дmmm
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 66
По умолчанию Закрыть "чужой" файл

Если процесс открыл файл на запись, потом ненормально завершился и файл остался открытым, может другой процесс это проверить и переоткрыть? Имеются в виду Thread в одной и той же проге
Дmmm вне форума Ответить с цитированием
Старый 18.12.2014, 13:46   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Если процесс открыл файл на запись, потом ненормально завершился и файл остался открытым
Его закроет система, если процесс закрылся совсем.

Цитата:
может другой процесс это проверить и переоткрыть?
По идее может, если первооткрываетель не заблокировал файл.
Человек_Борща вне форума Ответить с цитированием
Старый 18.12.2014, 14:07   #3
Дmmm
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 66
По умолчанию

система закроет, когда завершится вся прога. а если thread внутри неё, то нет. просто CloseFile не берёт
Дmmm вне форума Ответить с цитированием
Старый 18.12.2014, 14:33   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Дmmm Посмотреть сообщение
система закроет, когда завершится вся прога. а если thread внутри неё, то нет. просто CloseFile не берёт
а вы не можете закрыть файл в чужом процессе никак.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.12.2014, 17:10   #5
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Прсто сделай deletefile и всё. Тогда уже файл некому не достанется.
Если же надо чтобы файл мог открыватся из основного процесса, то лучше хранить дерективу на файл в основном адрессном пространстве процесса(короче говоря в разделе var юнита главной формы), тогда к нему можно будет обратится ещё раз, даже без переоткрытия.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.

Последний раз редактировалось саша40; 18.12.2014 в 17:13.
саша40 вне форума Ответить с цитированием
Старый 18.12.2014, 19:17   #6
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Сделай копию, тогда сможешь прочитать, а так никак не закрыть.
Чтобы изменить файл, нужно принудительно завершить все нити, которые с ним связаны
lollollollol вне форума Ответить с цитированием
Старый 18.12.2014, 20:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а так никак не закрыть.
А как же по твоему тогда Unlocker работает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2014, 12:09   #8
Дmmm
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 66
По умолчанию

Пусть даже переменная файла глобальная, всё равно AssignFile ее делать надо? Может можно как-то отловить идентификатор процесса, в к-м файл открыт? проблема в том, что нужно перезаписывать файл, не выходя из программы. неужели нет низкоуровневого доступа?
Дmmm вне форума Ответить с цитированием
Старый 19.12.2014, 21:35   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как же по твоему тогда Unlocker работает?
сколько им не пользовался он в основном грохал процесс в котором открыт файл
Цитата:
неужели нет низкоуровневого доступа?
и не должно быть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2014, 23:19   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сколько им не пользовался он в основном грохал процесс в котором открыт файл
Что-то он еще умеет, ибо я пару раз сталкивался именно с отсутствием процесса, но файл был заблокирован. Унлокер помог как ни странно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
создать файл формата ".dwg" или "dxf" Sergey_gorobets Помощь студентам 2 26.03.2013 03:03
Нужно поле "Загрузить файл" в "новости сайта" planetary Помощь студентам 1 24.06.2010 12:26
Исходник программы "узнать чужой IP" YoraG Работа с сетью в Delphi 6 18.10.2009 10:01
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03