forked from nique_372/MQLArticles
- Agregada la capdiad para trabajar con color y datetime en CSetFile - Correciones en StrToArray, para soportar formato unix en datetime y entero en color
66 lines
No EOL
5.7 KiB
MQL5
66 lines
No EOL
5.7 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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 |