![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непрерывная запись в файл
unknowing © (2008-02-11 18:52:00)Всем привет! У меня следующаяя проблема: с СОМ-порта непрерывно приходят данные, которые я записываю в файл. В случае остановки записи программой (CloseFile) или выхода из программы все нормально. Интересует ситуация когда пропадает питание и комп выключается: файл не записывается на диск... Как защищаться от такой ситуации?
unknowing (2008-02-11 19:03:00) [61]
> Palladin © (11.02.08 19:01) [5]
я так и делаю, только CloseFile после каждой записи себе не позволяю....
Palladin (2008-02-11 19:01:00) [62]Var
f:File;
n:Integer;
Begin
n:=10;
AssignFile(f,'file1'); Rewrite(f,1);
BlockWrite(f,n,SizeOf(n));
CloseFile(f);
End;
unknowing (2008-02-11 19:00:00) [63]
> Palladin © (11.02.08 18:57) [2]
> ну так и пиши не в буффер, а в файл... если уж на уровне
> файловой системы данные могут пропасть, то эта проблемма
> программно нерешаема... только установкой дизельного генератора
Пример, если не трудно, как "писать не в буфер, а сразу в файл"
unknowing (2008-02-11 18:58:00) [64]
> Джо © (11.02.08 18:56) [1]
> Если же ОС < 2003, то, наверное, периодически нужно переоткрывать
> файл (закрыть и снова открыть).
Тяжелый для меня вариант, т.к. и так уже с логикой в программе накручено...
А ос - winME
Palladin (2008-02-11 18:57:00) [65]ну так и пиши не в буффер, а в файл... если уж на уровне файловой системы данные могут пропасть, то эта проблемма программно нерешаема... только установкой дизельного генератора
Джо (2008-02-11 18:56:00) [66]Если ОС >= Win 2003, то можно время от времени вызывать FlushFileBuffers для записи внутреннего буфера на диск принудительно.
Если же ОС < 2003, то, наверное, периодически нужно переоткрывать файл (закрыть и снова открыть).
Проблема с дисковым кэшем ОС остается открытой и, вероятно, нерешимой.