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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2010, 08:43   #1
coolle
Пользователь
 
Регистрация: 29.06.2010
Сообщений: 38
Вопрос Как убить процесс?

Проблема в том что программа следит за определённым текстовым файлом, и при его изменении выносит все изменения в Memo, реализована эта функция компонентом Timer , т.е. каждые 5 секунд идёт проверка.
При запуске программы вылетает ошибка при отсутствии файла,
в Form=>OnChange вставил код:
этот код if FileExists('file.txt')=false then FileCreate('file.txt');
всё бы хорошо но этот файл после создания висит в процессе программы, и при его проверке каждые 5 секунд вылетает ошибка :

Cannot open file: "путь к файлу". Процесс не может получить доступ к файлу, т.к. этот файл занят другим процессом.

Помогите пожалуста, что мне делать я уже четвёртый день мучаюсь (((
coolle вне форума Ответить с цитированием
Старый 02.07.2010, 08:48   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Все правильно - когда ты его создаешь, то по умолчанию он уже тобой занят. Закрой его после создания - убирай за собой мусор.

ЗЫ.
FileClose(FileHandle);
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.07.2010, 08:48   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

а закрывать файл кто будет?
NiCola999 вне форума Ответить с цитированием
Старый 02.07.2010, 08:49   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
а закрывать файл кто будет?
Не после проверки, а именно сразу после создания. И код создания файла нужно вставлять не в onChange, а не посредственно перед операциями над файлом (то бишь где-то в твоем таймере).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.07.2010, 09:08   #5
coolle
Пользователь
 
Регистрация: 29.06.2010
Сообщений: 38
По умолчанию

хм... а как код то то должен выглядеть?
Код:
if FileExists('file.txt')=false then 
begin
FileCreate('file.txt');
FileClose(FileHandle);
end;
если я его в таймер запихно он каждые пять сек. будет его проверять, нагрузки на оперативу не будет?

Последний раз редактировалось Stilet; 02.07.2010 в 09:12.
coolle вне форума Ответить с цитированием
Старый 02.07.2010, 09:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а именно сразу после создания
А Николя это и имел ввиду
Цитата:
если я его в таймер запихно
Не так это делать нужно.
Есть функция, мониторинга изменения в файловой системе - ReadDirectoryChanges
Я даже помню выкладывал на форум компонент, в котором реализован мониторинг изменения директории

P.S. или FindFirstChangeNotification используй
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.07.2010, 09:11   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

если таймер на 5 сек, то нагрузки не будет) главное в бесконечный цикл это дело не загнать и всё будет окей)
NiCola999 вне форума Ответить с цитированием
Старый 02.07.2010, 09:12   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А Николя это и имел ввиду
По-моему, у него сначала другой пост был... Хотя может и померещилось с зеленого чаю с клубникой....
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.07.2010, 09:14   #9
coolle
Пользователь
 
Регистрация: 29.06.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от coolle Посмотреть сообщение
хм... а как код то то должен выглядеть?
Код:
if FileExists('file.txt')=false then 
begin
FileCreate('file.txt');
FileClose(FileHandle);
end;
если я его в таймер запихно он каждые пять сек. будет его проверять, нагрузки на оперативу не будет?
Код то правильный???

Цитата:
Сообщение от Stilet Посмотреть сообщение
А Николя это и имел ввиду

Не так это делать нужно.
Есть функция, мониторинга изменения в файловой системе - ReadDirectoryChanges
Я даже помню выкладывал на форум компонент, в котором реализован мониторинг изменения директории

P.S. или FindFirstChangeNotification используй
если чесно то я думаю мне до этого ещё пока далеко, я кодить начал 3 недели назад и вот написал свою первую программку.
Я пока что только основы изучаю...
Спасибо за помощь!

Последний раз редактировалось Stilet; 02.07.2010 в 09:18.
coolle вне форума Ответить с цитированием
Старый 02.07.2010, 09:17   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код правильный но работать не будет.
Зачем тебе именно создавать файл во во время проверки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как убить процесс зная его имя? One.Love Win Api 14 18.02.2012 14:31
Убить процесс по заголовку окна Nice42ru Помощь студентам 27 21.01.2010 11:55
Как убить процесс(с++) progdev Общие вопросы C/C++ 2 22.11.2009 21:30
убить процесс по его идентификатору - Работа с процессами ACE Valery Общие вопросы C/C++ 8 04.06.2009 21:51
Убить процесс, md5, архивация Igoressicus Помощь студентам 1 16.01.2009 10:37