MQLArticles/Utils/FA/StringToArray.mqh

66 lines
5.7 KiB
MQL5
Raw Permalink Normal View History

2025-09-22 09:08:13 -05:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| StringToArray.mqh |
//| Copyright 2025, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
2025-11-10 09:33:53 -05:00
#ifndef MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH
#define MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH
2025-09-22 09:08:13 -05:00
//+------------------------------------------------------------------+
2025-11-22 08:27:30 -05:00
//| Macro para generar funciones dentro del namespace |
2025-09-22 09:08:13 -05:00
//+------------------------------------------------------------------+
2025-12-28 18:28:41 -05:00
class StrTo
2025-09-22 09:08:13 -05:00
{
2025-12-28 18:28:41 -05:00
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) \
2025-09-22 09:08:13 -05:00
{ \
string result[]; \
ResetLastError(); \
const int num = StringSplit(cadena, cadena_separator, result); \
2025-09-22 09:08:13 -05:00
if(num == -1) \
return false; \
\
if(ArrayResize(array_receptor, num) == -1) \
2025-09-22 09:08:13 -05:00
return false; \
\
for(int i = 0; i < num; i++) \
2025-09-22 09:08:13 -05:00
{ \
2026-01-02 10:22:09 -05:00
if(trim)\
{ \
StringTrimLeft(result[i]); \
StringTrimRight(result[i]); \
} \
2025-09-22 09:08:13 -05:00
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)
2025-09-22 09:08:13 -05:00
#undef DEFINE_STRING_TO_ARRAY
2025-12-28 18:28:41 -05:00
};
2025-09-22 09:08:13 -05:00
//+------------------------------------------------------------------+
2025-11-10 09:33:53 -05:00
#endif // MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH