#property copyright "Copyright 2020, Malik Arykov" #include <Arrays/ArrayString.mqh> // флаги функции FileOpen #define FILE_READ_UTF8 (int)(FILE_SHARE_READ|FILE_ANSI) #define FILE_WRITE_UTF8 (int)(FILE_READ|FILE_WRITE|FILE_ANSI) #define FILE_READ_UNICODE (int)(FILE_SHARE_READ|FILE_UNICODE) #define FILE_WRITE_UNICODE (int)(FILE_READ|FILE_WRITE|FILE_UNICODE) // ----------------------------------------------------------------------------- // Файловые функции // ----------------------------------------------------------------------------- class UFile { public: static string LoadText(string path, int flags, CArrayString *lines); static bool SaveText(string text, string path, int flags, bool reset); static bool SaveText(CArrayString *lines, string path, int flags, bool reset); }; // ----------------------------------------------------------------------------- // Загрузить текстовый файл // ----------------------------------------------------------------------------- static string UFile::LoadText(string path, int flags, CArrayString *lines = NULL) { string sdlm = ""; string line, text; // загружаем текст по-строчно ResetLastError(); uint codePage = (flags == FILE_READ_UNICODE) ? CP_ACP : CP_UTF8; if (MQLInfoInteger(MQL_TESTER)) flags |= FILE_COMMON; int file = FileOpen(path, flags, '\n', codePage); if(file != INVALID_HANDLE) { text = ""; while(!FileIsEnding(file)) { line = FileReadString(file); if (lines != NULL) lines.Add(line); text += sdlm + line; sdlm = "\n"; } FileClose(file); } // проверяем код ошибки int rcode = GetLastError(); if (rcode != ERR_SUCCESS) { PrintFormat("%s / ERROR: %i / %s", __FUNCTION__, rcode, path); } return text; } // ----------------------------------------------------------------------------- // Сохранить текстовый файл (по умолчанию в UTF-8 с добавлением в конец файла) // ----------------------------------------------------------------------------- static bool UFile::SaveText(string text, string path, int flags = FILE_WRITE_UTF8, bool reset = false) { // если текст нужно переписать, то удаляем файл if (reset && FileIsExist(path)) FileDelete(path); // сохраняем текст ResetLastError(); uint codePage = (flags == FILE_WRITE_UNICODE) ? CP_ACP : CP_UTF8; if (MQLInfoInteger(MQL_TESTER)) flags |= FILE_COMMON; int file = FileOpen(path, flags, '\t', codePage); if(file != INVALID_HANDLE && FileSeek(file, 0, SEEK_END)) { FileWriteString(file, text); FileClose(file); } // проверяем код ошибки int rcode = GetLastError(); if (rcode != ERR_SUCCESS) { PrintFormat("%s / ERROR: %i / %s", __FUNCTION__, rcode, path); } return (rcode == ERR_SUCCESS); } // ----------------------------------------------------------------------------- // Сохранить массив строк в текстовый файл // ----------------------------------------------------------------------------- static bool UFile::SaveText(CArrayString *lines, string path, int flags, bool reset = false) { string text = ""; string sdlm = ""; for (int j = 0; j < lines.Total(); j++) { text += sdlm + lines.At(j); sdlm = "\n"; } return SaveText(text, path, flags, reset); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Доброго дня! Прошу подсказать кого-нибудь, имеется ли на mql5 кодировщик/декодировщик utf-8/16
?