Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Demo_FileSize - скрипт для MetaTrader 5
- Просмотров:
- 2183
- Рейтинг:
- Опубликован:
- 2013.04.03 16:25
- Обновлен:
- 2016.11.22 07:33
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Скрипт поочередно перебирает все CSV файлы в общей папке всех клиентских терминалов для получения их размеров. После получения размера, его значение сравнивается с пороговым значением "InpThresholdSize" и в зависимости от результата файл помещается либо в папку с именем "InpBigFolderName", либо в "InpSmallFolderName". Таким образом осуществляется сортировка файлов с большими и маленькими размерами.
Помимо использования функции FileSize(), в скрипте также используются функции FileFindFirst(), FileFindNext() и FileFindClose() для перебора файлов и функция FileMove() для их перемещения.
Код:
//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs //--- входные параметры input ulong InpThresholdSize=20; // граница размера файлов в килобайтах input string InpBigFolderName="big"; // папка для больших файлов input string InpSmallFolderName="small"; // папка для маленьких файлов //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string file_name; // переменная для хранения имен файлов string filter="*.csv"; // фильтр для поиска файлов ulong file_size=0; // размер файла в байтах int size=0; // количество файлов //--- распечатаем путь к папке в которой будем работать PrintFormat("Работаем в папке %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH)); //--- получение хэндла поиска в корне общей папки всех терминалов long search_handle=FileFindFirst(filter,file_name,FILE_COMMON); //--- проверим, успешно ли отработала функция FileFindFirst() if(search_handle!=INVALID_HANDLE) { //--- в цикле перемещаем файлы в зависимости от их размера do { //--- откроем файл ResetLastError(); int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON); if(file_handle!=INVALID_HANDLE) { //--- получим размер файла file_size=FileSize(file_handle); //--- закроем файл FileClose(file_handle); } else { PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",file_name,GetLastError()); continue; } //--- распечатаем размер файла PrintFormat("Размер файла %s равен %d байт",file_name,file_size); //--- определим путь для перемещения файла string path; if(file_size>InpThresholdSize*1024) path=InpBigFolderName+"//"+file_name; else path=InpSmallFolderName+"//"+file_name; //--- переместим файл ResetLastError(); if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON)) PrintFormat("Файл %s перемещен",file_name); else PrintFormat("Ошибка, код = %d",GetLastError()); } while(FileFindNext(search_handle,file_name)); //--- закрываем хэндл поиска FileFindClose(search_handle); } else Print("Files not found!"); }
Индикатор демонстрирует пример использования функции FileReadDouble()
Demo_FileWriteDoubleСкрипт демонстрирует пример использования функции FileWriteDouble()
Скрипт демонстрирует пример использования функции FileTell()
Demo_FileWriteIntegerСкрипт демонстрирует пример использования функции FileWriteInteger()