Как из конца файла удалить кусок данных. - страница 2

 
Vladimir Simakov:
Так ему не затереть, а удалить надо.

Мне без разницы что сделать. Нужно чтобы терминал не выводил последних десять свечек. Затереть или удалить не важно. Лишь бы терминал не видел данные о последних свечках. Спасибо за ответ.

 
Dmitry Fedoseev:

Никак, только перезаписывать весь файл.

Уважаемый Дмитрий. Способ с перезаписью хороший, но мне почему-то кажется он несколько сложным. Файл истории по факту из которого строятся графики в терминале около 100 мб. Каждый раз перезаписывать 100 мб. Не очень интересная история.

 
Vladimir Simakov:
Так ему не затереть, а удалить надо.

Спасибо Владимир. Вы бы не могли добавить дополнительную обвязку. Это же в какой-то библиотеке? Надо же какие-то ещё строки чтобы заработало. Заранее спасибо.

 
Vladimir Simakov:
SetFilePointer(handle, pointerWhatYouWant, &temp, FILE_BEGIN);
SetEndOfFile(handle);
SetFileValidData(handle, pointerWhatYouWant);

Какие это dll?
 
ROMAN KIVERIN:

kernel32.dll

Только и файл создавать/править, тоже через winapi нужно будет. Так, что изучайте)

https://docs.microsoft.com/ru-ru/windows/win32/api/fileapi/

 
Vladimir Simakov:

kernel32.dll

Только и файл создавать/править, тоже через winapi нужно будет. Так, что изучайте)

https://docs.microsoft.com/ru-ru/windows/win32/api/fileapi/

Спасибо большое.

 

прочитать и запомнить содержимое файла

преобразовать содержимое файла

создать новый файл 

записать в файл необходимую информацию

 
Renat Akhtyamov:

прочитать и запомнить содержимое файла

преобразовать содержимое файла

создать новый файл 

записать в файл необходимую информацию

Ренат. Около нескольких миллионов записей. Так их туда сюда гонять будет не просто.

 
Судя о всему, Ваш бинарный файл имеет жёсткую структуру - Заголовок фиксированной длины и N записей фиксированной длины. Для полного управления (вплоть до изменения записей в середине) достаточно средств MQL для прямого доступа (FileSeek). Не обязательно добиваться, чтобы последние записи были удалены. Просто сохраняйте в заголовок файла количество записей. Это стандарт при работе с бинарными файлами. Желательно ещё сохранять длину заголовка и длину записи для потенциального расширения формата.
 
Edgar Akhmadeev:
Судя о всему, Ваш бинарный файл имеет жёсткую структуру - Заголовок фиксированной длины и N записей фиксированной длины. Для полного управления (вплоть до изменения записей в середине) достаточно средств MQL для прямого доступа (FileSeek). Не обязательно добиваться, чтобы последние записи были удалены. Просто сохраняйте в заголовок файла количество записей. Это стандарт при работе с бинарными файлами. Желательно ещё сохранять длину заголовка и длину записи для потенциального расширения формата.

Не могли бы написать код. Не очень понятно как надо делать. Спасибо.

Как в заголовок файла сохранять в заголовок файла количество записей?

Мне только  надо чтобы последние свечки не отрисовывались в окне терминала. Файл открыт как график.
Причина обращения: