// Открытие или создание файла и перемещение указателя в конец int Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " "); FileSeek(Файл, 0, SEEK_END); // Если новый файл записать строку заголовков колонок if(FileSize(Файл)==0)FileWrite(Файл, " Дата Время Баланс Средства Залог Свободно Уровень Прибыль"); // Сбор информации и запись в файл string Текст=TimeToStr(TimeCurrent()); // Дата и Время string Строка=DoubleToStr(AccountBalance(),2); // Баланс = Оприходованные средства while(StringLen(Строка)<12)Строка=" "+Строка; Текст=Текст+Строка; Строка=DoubleToStr(AccountEquity(),2); // Средства = Баланс + Прибыль while(StringLen(Строка)<12)Строка=" "+Строка; Текст=Текст+Строка; Строка=DoubleToStr(AccountMargin(),2); // Залог while(StringLen(Строка)<11)Строка=" "+Строка; Текст=Текст+Строка; Строка=DoubleToStr(AccountEquity()-AccountMargin(),2); // Свободно= Средства - Залог while(StringLen(Строка)<12)Строка=" "+Строка; Текст=Текст+Строка; Строка=DoubleToStr(AccountEquity()/AccountMargin()*100,2)+"%"; // Уровень=Средства/Залог while(StringLen(Строка)<12)Строка=" "+Строка; Текст=Текст+Строка; Строка=DoubleToStr(AccountProfit(),2); // Прибыль while(StringLen(Строка)<13)Строка=" "+Строка; Текст=Текст+Строка; FileWrite(Файл, Текст); // Запись в файл сформированной текстовой строки FileClose(Файл); // Закрыть файл Файл = 0; // Заметая следы обнулим указатель }Только Excel в отличие от текстового файла является книгой, с особой внутренней организацией. Нужно делать импорт текстового файла
только не помогло..
FileSeek(Файл, 0, SEEK_END);
как будто ничего не делает.. файл при записи пишет с самого начала и затирает все, что было до
Откройте совместный доступ для чтения при создании файла. Файл лучше создать в OnInit(). Потом, не закрывая файл, пишите в него. Будет дописываться в конец.
В EXCEL настройте импорт файла и включите автообновление с интервалом в 1 минуту. Если нужно чаще, то можно вывести значок обновления на панель меню и кликать по нему мышкой. Я делаю и то, и другое.
// Создание файла int Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_SHARE_READ | FILE_WRITE, ";");
Понял, в чем дело. Обязательно нужна опция FILE_READ. Без нее файл создается заново и все бывшее ранее пропадает.
int Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " ");
А чтобы можно было в любой момент посмотреть содержимое файла, надо после записи закрывать его, а перед записью открывать. Чтобы другой советник с другого терминала имел доступ к файлу, надо еще FILE_COMMON и файл будет записываться в общую папку всех терминалов.
Понял, в чем дело. Обязательно нужна опция FILE_READ. Без нее файл создается заново и все бывшее ранее пропадает.
А чтобы можно было в любой момент посмотреть содержимое файла, надо после записи закрывать его, а перед записью открывать. Чтобы другой советник с другого терминала имел доступ к файлу, надо еще FILE_COMMON и файл будет записываться в общую папку всех терминалов.
Вместо FILE_READ поставьте FILE_SHARE_READ и файл можно не закрывать. Другие будут спокойно его читать. Но, эти другие должны озаботиться обновлением. Вот они и должны закрывать и открывать файлы, чтобы увидеть обновления.
Иногда они будут нарываться на ошибки доступа к файлу. Но, по опыту, это происходит редко, если обновляться раз в несколько секунд.
Вместо FILE_READ поставьте FILE_SHARE_READ и файл можно не закрывать. Другие будут спокойно его читать. Но, эти другие должны озаботиться обновлением. Вот они и должны закрывать и открывать файлы, чтобы увидеть обновления.
Иногда они будут нарываться на ошибки доступа к файлу. Но, по опыту, это происходит редко, если обновляться раз в несколько секунд.
Открытый файл невозможно прочесть Блокнотом Windows, Notepad++ и другими программами - или он кажется пустым, или в нем отсутствуют последние записи. Когда же файл открывается перед записью и закрывается сразу после - он спокойно читается всеми программами.
Открытый файл невозможно прочесть Блокнотом Windows, Notepad++ и другими программами - или он кажется пустым, или в нем отсутствуют последние записи. Когда же файл открывается перед записью и закрывается сразу после - он спокойно читается всеми программами.
Странно. У меня все читается.
Действительно, его невозможно открыть сторонними приложениями, если при открытии не указать FILE_SHARE_READ
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый вечер
Можете привести кусок кода с примером, чтобы он делал элементарную вещь:
открывал excel файл для дозаписи в новую строку нового значения (т.е. чтобы он не затирал уже записанные строки, а дозаписывал их в конец)
не могу найти пример конкретно с дозаписью в конец файла
спасибо