Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизЗаписать в файл сразу, аналог flush pascal Найти похожие ветки
← →
AV © (2012-02-15 10:55) [0]есть вероятность падения приложения
есть задача свести потерю лога к минимуму
имею
FFSLogAction := TFileStream.Create(
FFSLogAction.Position := FFSLogAction.Size;
FFSLogAction.WriteBuffer(sAction[1], Length(sAction));
FlushFileBuffers(FFSLogAction.Handle);
правильно?
← →
Ega23 © (2012-02-15 11:20) [1]
> FFSLogAction.WriteBuffer(sAction[1], Length(sAction));FFSLogAction.WriteBuffer(sAction[1], Length(sAction)* SizeOf(Char));
Если я правильно понял.
← →
AV © (2012-02-15 11:24) [2]
> FlushFileBuffers
не совсем, мне именно сброс буферов нужен.
т.е. попросить ОС записать сразу,
обычно, все что хочет средний человек, уже реализовано
т.е. ожидая найти FFSLogAction. Flush был расстроен :)
отсюда,
применим ли вариант
FlushFileBuffers(FFSLogAction.Handle);
← →
CRLF (2012-02-15 12:01) [3]А может стоит CreateFile с FILE_FLAG_WRITE_THROUGH, а затем TFileStream.Create(Handle)?
← →
AV © (2012-02-16 11:21) [4]Ладно. В принципе это работает.
тогда еще вопрос
как писать в файл так, что бы все могли читать, но не могли писать?
если fmCreate - то ему кажется все равно, что я еще понаписал, он не дает и читать тоже.
Если изголиться так
if not(FileExists(s)) then
FfsLog := TFileStream.Create(s, fmCreate or fmShareDenyWrite);
FfsLog.Free;
FfsLog := TFileStream.Create(s, fmOpenWrite or fmShareDenyWrite);
то нормально,
но плохо смотрится :)
Как бы хорошо сделать?
← →
Anatoly Podgoretsky © (2012-02-16 11:27) [5]> AV (16.02.2012 11:21:04) [4]
Убери права на запись в файл
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.063 c