Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.036 c
3-1116855321
parasolka
2005-05-23 17:35
2005.06.29
Вставка данных в таблицу.


3-1116231833
malamba
2005-05-16 12:23
2005.06.29
округление при выводе из базы данных


11-1101251566
XProger
2004-11-24 02:12
2005.06.29
Прокрутка в Memo


4-1114667477
Bil Bal Dur
2005-04-28 09:51
2005.06.29
открыть Мой Компьютер


14-1117721784
able
2005-06-02 18:16
2005.06.29
php && rtf





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский