powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание файла поверх существующего
5 сообщений из 5, страница 1 из 1
Создание файла поверх существующего
    #39682926
ЧёЗа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При выгрузке данных вот таким образом...
Код: pascal
1.
2.
  FileStream:= TMemoryStream.Create;
  StringStream := TStringStream.Create('');



Код: pascal
1.
2.
  FileStream.LoadFromStream(StringStream);
  FileStream.SaveToFнойи последней.ile('C:\1.txt');


... файл не перезаписывается.
Как сделать, чтобы он удалялся и создавался заново.

Мне критично из-за того, что другая программа должна взять FileAge(), а там всегда одно и тоже.
Если его вручную удалить, то создастся с нормальной датой, последней и актуальной.

Победить никак не могу.
Спасибо.
...
Рейтинг: 0 / 0
Создание файла поверх существующего
    #39682941
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧёЗа,

1. явно удалять и создавать занова.
2. а еще лучше не пользоваться FileAge. Искать дату последнего изменения.
...
Рейтинг: 0 / 0
Создание файла поверх существующего
    #39682960
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рискованный подход

1) удаляешь файл
2) начинаешь создавать новый файл
3) тут крэш в программе или в компьютере - и новый файл создается наполовину только

старого файла уже нет, нового еще нет - нормально?

тут надо flip-flop делать, если места на диске хватает, как архиваторы например

> другая программа должна взять FileAge(),

тоже стрёмно

1) удаляешь файл
2) начинаешь создавать новый файл c новым age
3) успеваешь записать например 25% файла...
4) тут другая программа просыпается и начинает его читать, прочитывает процентов 30 и отключается
5) ты заканчиваешь записывать файл - но всё, что ты записал после 30% никем уже никогда не будет прочитано

------------

в общем, буфер - это одно дело, а признак готовности буфера - другое! Их надо раздельно держать.

IMHO правильный вариант

1) заводишь папку типа C:\Exchange
2) пишущая программа пишет туда файлы 000000.txt, 000001.txt, 0000002.txt и т.д.
3) при этом она пишет их как 000000.$$$ пока полностью все данные не положит на диск и не сбросит буферы. Только потом переименовывает $$$ в txt
4) никакой файл никогда не переписывается, вообще!
5) читающая программа подписывается у Windows на сообщения про папку C:\Exchange
6) когда Windows говорит "папка изменилась" - смотрит на список *.txt, появилось ли там ранее нечитанное
7) после успешного чтения (n).txt читающая прграмма удаляет (n-1).txt, (n-2).txt и т.д.

Таким образом у тебя в папке на всякий случай всегда есть предыдущий файл

А если понадобится отладка - ты вообще отключишь 7-й шаг и у тебя будут накапливаться ВСЕ данные за весь период работы
...
Рейтинг: 0 / 0
Создание файла поверх существующего
    #39683216
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetFileTime не вариант?
...
Рейтинг: 0 / 0
Создание файла поверх существующего
    #39683221
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, давайте просто, сделаем проверку - а доступен ли сейчас файл ? Если нет, то остановим деятельность на N миллисекунд. И потом снова, попробуем записать.

И тогда ничего не потеряем.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание файла поверх существующего
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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