//+------------------------- WritingLineInFile() ---------------------------- //| Дописывание строки в конец файла //+--------------------------------- void WritingLineInFile(string FlName, string Text){ int file_handle=FileOpen(FlName, FILE_CSV|FILE_READ|FILE_WRITE, " "); if (file_handle>0){ FileSeek(file_handle,0,SEEK_END); FileWrite(file_handle,Text); FileClose(file_handle); } else{ Print("Ошибка ",GetLastError()," - Не удалось открыть файл ",FlName); } } //---------------------------------------------------------------------------
В основном коде генерируем имя файла и строку, которую нужно дописать в конец этого файла. Например, так
FileName=Symbol()+"_"+DoubleToStr(Day(),0)+"_"+DoubleToStr(Month(),0)+"_"+DoubleToStr(Year(),0)+".txt"; TextInFile=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); TextInFile=TextInFile+" "+DoubleToStr(Bid,Digits);
Затем вызываем саму функцию:
WritingLineInFile(FileName,TextInFile);
Чтоб данные затирались, функцию FileOpen() нужно использовать с иным ключом. Цитирую учебник:
Режим открытия файла FILE_READ предусматривает, что файл будет использоваться программой только для чтения. Попытка открытия файла в этом режиме заканчивается неудачей, если файла с указанным именем не существует.
Режим открытия файла FILE_WRITE предусматривает, что файл будет использоваться программой только для записи. Попытка открытия файла в этом режиме приводит к открытию файла нулевой длины. Даже если до открытия в файле были данные, то они будут уничтожены. Открытие файла в этом режиме может закончиться неудачей, если файл ранее был открыт другой программой (в режиме записи).
Допускается открытие файла в режиме FILE_READ|FILE_WRITE. Этот режим предусматривает возможность чтения из файла и записи в файл. Режим используется при необходимости дописать данные в файл, уже содержащий какие-то данные. Функция предусматривает обязательное использование одного из режимов FILE_READ или FILE_WRITE или их комбинацию.
Режим открытия FILE_BIN определяет работу с рабочим файлом, как с бинарным. Режим открытия файла FILE_CSV определяет работу с рабочим файлом, как с текстовым. Функция предусматривает обязательное использование одного из режимов FILE_BIN или FILE_CSV. Одновременное использование режимов FILE_BIN и FILE_CSV не допускается.
Функция предусматривает обязательное комбинирование режимов FILE_READ, FILE_WRITE или FILE_READ|FILE_WRITE с режимами FILE_BIN или FILE_CSV. Например, для чтения текстового файла необходимо использовать комбинацию режимов FILE_CSV|FILE_READ, а для того, чтобы добавить запись в бинарный файл, нужно использовать комбинацию FILE_BIN|FILE_READ|FILE_WRITE.
В пределах одного исполняемого модуля (прикладной программы, например, эксперта) одновременно может быть открыто не более 32 файлов. Описатели файлов, открытых в одном модуле, нельзя передавать в другие модули (библиотеки).
спасибо за ответы, так работает без проблем
но мне надо было записать с WinAPI
метод _lcreate тоже не подходит, так как файл удалять нель зя
CreateFile http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
SetFilePointer http://msdn.microsoft.com/en-us/library/aa365541(VS.85).aspx
SetEndOfFile http://msdn.microsoft.com/en-us/library/aa365531(VS.85).aspx
.
А _lcreate- это что, функция ядра? Зачем использовать её?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
по ссылке https://www.mql5.com/en/articles/1540 записывал в файл,
но содержимое старого почему то не стирается ?
может кто знает, как правилно