powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ДОПИСЫВАТЬ текст.файл - не открывая его
9 сообщений из 34, страница 2 из 2
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40027636
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Например - где здесь может быть ошибка
Как минимум, не хватает try..finally

Если идет вызов из разных потоков, а по видимому так оно и есть, то не хватает еще средств синхронизации
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40027641
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
HOME_X,
Код: pascal
1.
  Flush(fsoOpen);


Не фига не помогает


А если так:
Код: plaintext
1.
2.
3.
4.
5.
CreateFile (,..., FILE_SHARE_READ | FILE_FLAG_NO_BUFFERING , ...);
SetFilePointer (..., FILE_END);
WriteFile (...);
FlushFileBuffers (...);
CloseFile();



Функции CreateFile, SetFilePointer не считывают содержимое файла в память. Проверьте под пошаговым отладчиком на файле объемом в несколько гигабайт. Наблюдайте в TaskManager-e потребляемый объем памяти программой и системой.
И еще. Хорошим тоном считается проверять результат работы всех!!! функций. Включая CreateFile, CloseFile, WriteFile...
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40027651
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DSKalugin
Класс для логирования.

Исключая сомнительную необходимость в стриме, ForceDirectories возвращает флаг результата, а значит, дальнейшая проверка через exist не нужна
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40027711
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа !

Спасибо за помощь и критику
И особенно спасибо за примеры КОД

По крайней мере понятно что именно не работает ...
Насчет производительности тоже согласен - возможно надо менять архитектуру объекта и
режим лога - держать открытым определив точки Flush

Забил затычку - буду НА ПОДУМАТЬ
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
      AssignFile(fsoOpen,Path);
      if FileExists(Path) then begin
        I:=0;
        K:=False;
        repeat
          try
            Append(fsoOpen);
            K:=True;
          except
            Sleep(1000);
          end;
          I:=I+1;
        until (I=10) or (K);
        if (I=10) and ExistsLog then WorkFile('Save',ExtractFilePath(Values['Log'])+'error.log','Append '+Str);
      end else Rewrite(fsoOpen);
      WriteLn(fsoOpen,Str);
      Flush(fsoOpen);
      CloseFile(fsoOpen);
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40027733
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой велосипед:

http://www.rgreat.ru/tmp/Delphi/Log.pas
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40028535
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKalugin
Класс для логирования.
Пишет по кругу файл с максимальным размером 64МБ
Код: pascal
1.
2.
unit wsLogFile;
.............




Изучил Ваш пример

Не совсем ясно в какой момент идет физический Flush на диск ?
В момент TSaveStream.Free или в момент FS.Write(PAnsiChar(TS)^, Length(TS))
Или объект имеет некий буфер в опер.памяти и при его заполнении самостоятельно
сбрасывает на диск.

Обращали внимание ?

спасибо за код
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40028539
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,
"В момент TSaveStream.Free" - хотел сказать TFileStream .Free
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40028967
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKalugin

Класс для логирования.
Пишет по кругу файл с максимальным размером 64МБ


Flush на диск происходит в момент уничтожения объекта TFileStream.Free
Проверяно на практике.
Отсюда отсутствие конфликтов при циклических вызовах.

Т.е. работая с процессами проги Вы увеличиваете использование оперативной
памяти еще на 64 MB потом просто обнуляете лог и пишите его понову.
Вывод сделаете сами

Благодарен за код !
...
Рейтинг: 0 / 0
ДОПИСЫВАТЬ текст.файл - не открывая его
    #40029003
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HOME_X>Проверяно на практике... Вы увеличиваете использование оперативной памяти еще на 64 MB потом просто

Исходники-то смотрел?
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ДОПИСЫВАТЬ текст.файл - не открывая его
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]