Доброго дня!Подскажите пожалуйста. Не получается сделать дозапись в файл.
Исходные условия:
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 прежде чем записывать. Иначе перезапись происходит с непонятного места. А если до конца прочитать, то с конца текст добавляется.
Не надо ничего читать. Достаточно переместить файловый указатель в конец файла:
FileSeek(Результат, 0, SEEK_END); //конец файла
А если требуется добавить текст выше существующего, т.е. существующий текс сместить ниже?
Полностью перезаписывать файл. Прочитать файл в массив, закрыть его, открыть для записи и записать с изменениями.
Или открыть, читать и записывать во вспомогательный файл, потом переименовать его.
А если требуется добавить текст выше существующего, т.е. существующий текс сместить ниже?
Полностью перезаписывать файл. Прочитать файл в массив, закрыть его, открыть для записи и записать с изменениями.
Или открыть, читать и записывать во вспомогательный файл, потом переименовать его.
Чушь какая то, если нужно записать строку в начале файла то ничего делать не нужно, потому как при открытии файла файловый указатель находится в начале файла, если нужно записать в конец файла то необходимо сразу после открытия файла переместить файловый указатель в конец файла выше приведённой строкой!
Букварь прописать? Надо добавить текст выше существующего.
Чушь какая то, если нужно записать строку в начале файла то ничего делать не нужно, потому как при открытии файла файловый указатель находится в начале файла, если нужно записать в конец файла то необходимо сразу после открытия файла переместить файловый указатель в конец файла выше приведённой строкой!
я пробовал, просто заменяется текст новым, а не переносится ниже

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Исходные условия:
1. Файл существует.
2. В файле есть текст.
Нужно: в этот файл дозаписать некий текст. Старый текст не должен быть удален.
Код на текущий момент:
int Результат = FileOpen(ПолноеИмяФайла, FILE_CSV|FILE_WRITE|FILE_COMMON|FILE_ANSI, ";");
if (Результат == INVALID_HANDLE) return(false); //если файла нет или он заблокирован - ничего не делаем
FileSeek(Результат, 0, SEEK_CUR); //новая строка
FileWrite(Результат, ЗаписываемаяСтрока);
FileClose(Результат);
Проблема:
Старый текст каждый раз удаляется, т.е. идет перезапись файла.
MT5
ВОПРОС:
как добиться требуемого?
Заранее спасибо!