Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Работа с файлами   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.069 c
14-1117642269
Delphinium
2005-06-01 20:11
2005.06.29
Visual C++


3-1116333262
kyn66
2005-05-17 16:34
2005.06.29
Как переименовать столбец или таблицу Access?


4-1115503256
g-l-u-k
2005-05-08 02:00
2005.06.29
ASM в Delphi


1-1117905329
sofs
2005-06-04 21:15
2005.06.29
как записать в мемо какой либо символ из кодовой таблицы Windows?


14-1117201660
rOOse
2005-05-27 17:47
2005.06.29
вирус