Главная страница
    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.041 c
1-1118058494
Aleksandr.
2005-06-06 15:48
2005.06.29
Что может быть причиной невыгрузки библиотеки?


1-1117876056
Vf
2005-06-04 13:07
2005.06.29
код


14-1117780745
QuasiLamo
2005-06-03 10:39
2005.06.29
PHP


1-1118065199
Gashish
2005-06-06 17:39
2005.06.29
Перенос модели в из 3d max в Delphi


8-1109731660
dr_ollo
2005-03-02 05:47
2005.06.29
DSPack регулировка яркости и контрастности в тюнере





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский