//+------------------------------------------------------------------+ //| StringToArray.mqh | //| Copyright 2025, Niquel Mendoza. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, Niquel Mendoza." #property link "https://www.mql5.com" #property strict #ifndef MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH #define MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH //+------------------------------------------------------------------+ //| Macro para generar funciones dentro del namespace | //+------------------------------------------------------------------+ class StrTo { public: #define DEFINE_STRING_TO_ARRAY(TYPE, CONVERT_FUNC, PREFIX) \ static bool Cst##PREFIX(TYPE &array_receptor[], const string &cadena, ushort cadena_separator = ',', bool trim = false) \ { \ string result[]; \ ResetLastError(); \ const int num = StringSplit(cadena, cadena_separator, result); \ if(num == -1) \ return false; \ \ if(ArrayResize(array_receptor, num) == -1) \ return false; \ \ for(int i = 0; i < num; i++) \ { \ if(trim)\ { \ StringTrimLeft(result[i]); \ StringTrimRight(result[i]); \ } \ array_receptor[i] = CONVERT_FUNC; \ } \ return true; \ } // Generar funciones sobrecargadas para cada tipo DEFINE_STRING_TO_ARRAY(string, result[i], Array) DEFINE_STRING_TO_ARRAY(int, int(result[i]), Array) DEFINE_STRING_TO_ARRAY(long, long(result[i]), Array) DEFINE_STRING_TO_ARRAY(short, short(result[i]), Array) DEFINE_STRING_TO_ARRAY(char, char(result[i]), Array) DEFINE_STRING_TO_ARRAY(bool, (result[i] == "true" || result[i] == "True" || bool(int(result[i]))), Array) DEFINE_STRING_TO_ARRAY(uint, uint(result[i]), Array) DEFINE_STRING_TO_ARRAY(ulong, ulong(result[i]), Array) DEFINE_STRING_TO_ARRAY(uchar, uchar(result[i]), Array) DEFINE_STRING_TO_ARRAY(ushort, ushort(result[i]), Array) DEFINE_STRING_TO_ARRAY(double, double(result[i]), Array) DEFINE_STRING_TO_ARRAY(float, float(result[i]), Array) DEFINE_STRING_TO_ARRAY(datetime, StringToTime(result[i]), ArrayDatetimeStr) DEFINE_STRING_TO_ARRAY(datetime, datetime(long(result[i])), ArrayDatetimeUnix) DEFINE_STRING_TO_ARRAY(color, color(result[i]), ArrayColorNormal) DEFINE_STRING_TO_ARRAY(color, color(int(result[i])), ArrayColorInteger) #undef DEFINE_STRING_TO_ARRAY }; //+------------------------------------------------------------------+ #endif // MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH