Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непрерывная запись в файл


Страницы:   1 2 3 4

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, то, наверное, периодически нужно переоткрывать файл (закрыть и снова открыть).

Проблема с дисковым кэшем ОС остается открытой и, вероятно, нерешимой.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо