Есть открытый файл.
Как удалить кусок данных с конца файла
Вот открыли файл
Засунули туда 20 свечек. Поняли что 10 лишних. Как их удалить из этого же файла?
Если чисто на mql, то: создается временный файл -> в него копируется все, что нужно -> рабочий файл удаляется -> временный переименовывается в рабочий.
Ну,а если хотите красиво, то WinAPI в помощь.
Есть открытый файл.
Как удалить кусок данных с конца файла
Вот открыли файл
Засунули туда 20 свечек. Поняли что 10 лишних. Как их удалить из этого же файла?
ИМХО, такой путь - потенциальный танец на граблях. Лучше пересоздать файл с актуальными данными. Либо работать с бинарным файлом с жёсткой структурой.
Если чисто на mql, то: создается временный файл -> в него копируется все, что нужно -> рабочий файл удаляется -> временный переименовывается в рабочий.
Ну,а если хотите красиво, то WinAPI в помощь.
И какую же такую красоту даст Win API?
...
Засунули туда 20 свечек. Поняли что 10 лишних. Как их удалить из этого же файла?
Никак, только перезаписывать весь файл.
И какую же такую красоту даст Win API?
SetFilePointer(handle, pointerWhatYouWant, &temp, FILE_BEGIN); SetEndOfFile(handle); SetFileValidData(handle, pointerWhatYouWant);
Вы там переотдыхали что-ли ?
FileSeek - сдвинуть позицию. Просто передвинуть на размер "ненужных свечек", и всё.
Так ему не затереть, а удалить надо.
Не вижу разницы.
Исходная задача - написано N+K свечек, K последних оказались лишними.
Решение - переместить указатель на K*размер_структуры_свечи от конца файла.
Если будете записывать дальше, то лишние свечки перезатрутся; если закроете сразу, то удалятся (файл обрежется по позиции).
нюанс - могут пляски/гонки c SHARE_READ если кто-то открыл файл на чтение.
Не вижу разницы.
Исходная задача - написано N+K свечек, K последних оказались лишними.
Решение - переместить указатель на K*размер_структуры_свечи от конца файла.
Если будете записывать дальше, то лишние свечки перезатрутся; если закроете сразу, то удалятся (файл обрежется по позиции).
нюанс - могут пляски/гонки c SHARE_READ если кто-то открыл файл на чтение.
- Не удалятся.
- А использование SHARE_READ|SHARE_WRITE, без наличия LockFile... Без меня.
Не вижу разницы.
Исходная задача - написано N+K свечек, K последних оказались лишними.
Решение - переместить указатель на K*размер_структуры_свечи от конца файла.
Если будете записывать дальше, то лишние свечки перезатрутся; если закроете сразу, то удалятся (файл обрежется по позиции).
нюанс - могут пляски/гонки c SHARE_READ если кто-то открыл файл на чтение.
Очень здорово. Большое спасибо. Если мы закроем файл Вы точно знаете что файл закроется именно в том месте где стоит указатель. В моём случае нужно будет опять переоткрывать. Файл читается и выводится терминалом, а данные из файла терминал выводит в виде свечек.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть открытый файл.
Как удалить кусок данных с конца файла
Вот открыли файл
Засунули туда 20 свечек. Поняли что 10 лишних. Как их удалить из этого же файла?