Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизРабота с файлами Найти похожие ветки
← →
zamkom © (2005-06-07 10:43) [0]Доброго времени суток.
Попробую описать проблему. Моя программа отслеживает появление файла в определенном каталоге с помощью функции:
If FileExists(Form2.Edit14.Text+"\"+S+".err") then
begin
Timer1.Enabled:=False;
Label5.Caption:="Файл найден: "+Form2.Edit14.Text+"\"+S+".err";
Label6.Caption:="";
Button1.Enabled:=True;
end;
Этот файл создается ДОС программой и потом в она (ДОС программа) некоторое время пишет данные в этот файл. Поэтому когда моя программа пытается получить доступ к этому файлу выскакивает ошибка ввода/вывода. Подскажите пожалуйста как можно определить могу ли я работать с файлом или нет. Заранее спасибо за ответы.
← →
PVOzerski © (2005-06-07 10:49) [1]>Поэтому когда моя программа пытается получить доступ к этому файлу
>выскакивает ошибка ввода/вывода.
Ты ж сам на свой вопрос почти ответил. Обрабатывай либо исключение ({$I+}), либо IOResult ({$I-}). Хотя это если считать, что DOS-программа раз создает/открывает файл, пишет в него и навсегда закрывает. И проверяет, прежде чем создать/открыть файл, а нет ли уже файла с таким же именем, открытого программой, написанной zamkom :).
← →
TUser © (2005-06-07 10:52) [2]А ты сам вызываешь эту ДОС-программу? Если да - то все эти проверки не нужны.
← →
zamkom © (2005-06-07 10:54) [3]PVOzerski © (07.06.05 10:49) [1]
Вот это мне и интересно: Как мне обработать IOResult можно привести мааааленький кусочек кода? :)
← →
PVOzerski © (2005-06-07 11:12) [4]Да в общем, в цикле :)
{$I-}
FileMode := 2;
AssignFile(f, "c:\temp\test");
repeat
Reset(f, 1);
if IOresult = 32 then
{Файл занят, сюда что-нибудь вроде Application.ProcessMessages}
else
break
until false;
← →
zamkom © (2005-06-07 11:18) [5]Спасибо.
← →
TUser © (2005-06-07 11:20) [6]Добавлю еще, что FileMode = 2 по умолчанию, но если предполагается, что он может быть иным, то лучше сохранить старое значение и в секции finally его восстановить.
← →
TUser © (2005-06-07 11:21) [7]Кстати, ответь на вопрос [2]
← →
zamkom © (2005-06-07 12:24) [8]TUser © (07.06.05 11:21) [7]
НЕ ДОС программу вызываю не я и я не имею возможность ее контролировать.
← →
GreatMaster (2005-06-07 12:29) [9]а накой мучицца если есть TrxFolderMonitor?
← →
TUser © (2005-06-07 12:31) [10]> zamkom © (07.06.05 12:24) [8]
Не гожусь я в телепаты :(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.086 c