![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл занят? [D6, NT4, WinXP]
vitnt © (2002-12-16 06:40:00)Можно ли узнать занят ли файл другим приложением?
У меня такая ситуация:
-другая программа периодически перезаписывает файл (Rewrite, Writeln, CloseFile)
-моя программа периодически считывает этот файл
-иногда возникает проблема: я попадаю в момент между Rewrite и CloseFile, и файл считывется только до того места до которого другая программа успела его записать.
В связи с этим вопрос: как узнать открыт ли в данный момент файл для записи другим приложением?
Sha (2002-12-16 20:29:00) [1]Попробуй в той программе, которая пишет, по окончании работы ставить флаг READONLY, SYSTEM или HIDDEN или снимать флаг ARCHIVE у записанного файла. А в той, которая читает, анализируй состояние флага.
zavdim (2002-12-16 09:40:00) [2]А что тебе надо?
Ты видимо хочешь устроить обмен данными между программами или не так?
Проблема может быть ведь и в другом. У меня так было: создавал звуковой файл прогой, потом считывал другой. Так как правило игралась часть звука - концовка кушалась. В тонкостях не стал разбираться - по другому решил, но может тут и кеширование было.
Song (2002-12-16 09:36:00) [3]Тогда поставь {$I-} и проверяй на IOresult
vitnt (2002-12-16 09:33:00) [4]Да, примерно так
Reset(DF);
while (not Eof(DF)) and (i<1000) do Readln(DF, S[i]);
но я также пробовал через
MyString:=TStringList.Create;
MyString.Clear;
MyString.LoadFromFile(Filename);
без разницы
Song (2002-12-16 08:47:00) [5]Это зависит от того как ты его открываешь. Также через Reset() ?