FileOpen - как сделать дозапись в файл?

 
Доброго дня!Подскажите пожалуйста. Не получается сделать дозапись в файл.

Исходные условия:
1. Файл существует.
2. В файле есть текст.

Нужно: в этот файл дозаписать некий текст. Старый текст не должен быть удален.


Код на текущий момент:

   int Результат = FileOpen(ПолноеИмяФайла,  FILE_CSV|FILE_WRITE|FILE_COMMON|FILE_ANSI, ";");
   if (Результат == INVALID_HANDLE) return(false); //если файла нет или он заблокирован - ничего не делаем
 
   FileSeek(Результат, 0, SEEK_CUR); //новая строка
   FileWrite(Результат, ЗаписываемаяСтрока);
   FileClose(Результат);


Проблема:
Старый текст каждый раз удаляется, т.е. идет перезапись файла.
MT5


ВОПРОС:
как добиться требуемого?


Заранее спасибо!
 
Попробуйте с SEEK_END
 
Mopo3:
Доброго дня!Подскажите пожалуйста. Не получается сделать дозапись в файл.

Исходные условия:
1. Файл существует.
2. В файле есть текст.

Нужно: в этот файл дозаписать некий текст. Старый текст не должен быть удален.


Код на текущий момент:

   int Результат = FileOpen(ПолноеИмяФайла,  FILE_CSV|FILE_WRITE|FILE_COMMON|FILE_ANSI, ";");
   if (Результат == INVALID_HANDLE) return(false); //если файла нет или он заблокирован - ничего не делаем
 
   FileSeek(Результат, 0, SEEK_CUR); //новая строка
   FileWrite(Результат, ЗаписываемаяСтрока);
   FileClose(Результат);


Проблема:
Старый текст каждый раз удаляется, т.е. идет перезапись файла.
MT5


ВОПРОС:
как добиться требуемого?


Заранее спасибо!

А чего справкой не пользуетесь? Нужен второй вариант флагов.

Есть некоторые особенности работы при указании флагов чтения и записи:

  • Если указан FILE_READ – делается попытка открытия уже существующего файла. Если файл не существует, то открыть файл не получится, новый файл не создается.
  • Если FILE_READ|FILE_WRITE – создаётся новый файл если файл с таким именем отсутствует.
  • Если FILE_WRITE –  файл создается заново с нулевым размером.
 
int Результат = FileOpen(ПолноеИмяФайла,  FILE_CSV|FILE_READ|FILE_WRITE|FILE_COMMON|FILE_ANSI, ";");
if (Результат == INVALID_HANDLE) return(false); //если файла нет или он заблокирован - ничего не делаем
  
FileSeek(Результат, 0, SEEK_END); //новая строка
FileWrite(Результат, ЗаписываемаяСтрока);
FileClose(Результат);
 
Прочитать файл до конца FileIsEnding прежде чем записывать. Иначе перезапись происходит с непонятного места. А если до конца прочитать, то с конца текст добавляется.
 
Oksana Berenko:
Прочитать файл до конца FileIsEnding прежде чем записывать. Иначе перезапись происходит с непонятного места. А если до конца прочитать, то с конца текст добавляется.

Не надо ничего читать. Достаточно переместить файловый указатель в конец файла:

FileSeek(Результат, 0, SEEK_END); //конец файла
 
А если требуется добавить текст выше существующего, т.е. существующий текс сместить ниже?
 
Mikhail Simakov #:
А если требуется добавить текст выше существующего, т.е. существующий текс сместить ниже?

Полностью перезаписывать файл. Прочитать файл в массив, закрыть его, открыть для записи и записать с изменениями. 

Или открыть, читать и записывать во вспомогательный файл, потом переименовать его.

 
Mikhail Simakov #:
А если требуется добавить текст выше существующего, т.е. существующий текс сместить ниже?
Dmitry Fedoseev #:

Полностью перезаписывать файл. Прочитать файл в массив, закрыть его, открыть для записи и записать с изменениями. 

Или открыть, читать и записывать во вспомогательный файл, потом переименовать его.

Чушь какая то, если нужно записать строку в начале файла то ничего делать не нужно, потому как при открытии файла файловый указатель находится в начале файла, если нужно записать в конец файла то необходимо сразу после открытия файла переместить файловый указатель в конец файла выше приведённой строкой!
 
Mihail Marchukajtes #:
Чушь какая то, если нужно записать строку в начале файла то ничего делать не нужно, потому как при открытии файла файловый указатель находится в начале файла, если нужно записать в конец файла то необходимо сразу после открытия файла переместить файловый указатель в конец файла выше приведённой строкой!

Букварь прописать? Надо добавить текст выше существующего.

 
Mihail Marchukajtes #:
Чушь какая то, если нужно записать строку в начале файла то ничего делать не нужно, потому как при открытии файла файловый указатель находится в начале файла, если нужно записать в конец файла то необходимо сразу после открытия файла переместить файловый указатель в конец файла выше приведённой строкой!

я пробовал, просто заменяется текст новым, а не переносится ниже

Причина обращения: