forked from nique_372/MQLArticles
86 lines
No EOL
6.6 KiB
MQL5
86 lines
No EOL
6.6 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
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
string StringTrimChar(const string &str, ushort to_delete_character = ' ')
| |
{
| |
int len = StringLen(str);
| |
if(len == 0)
| |
return str;
| |
| |
int start = 0;
| |
int end = len - 1;
| |
| |
//---
| |
while(start < len && str[start] == to_delete_character)
| |
start++;
| |
| |
| |
if(start == len)
| |
return ""; // Todo son caracteres a eliminar
| |
| |
//---
| |
while(end >= start && str[end] == to_delete_character)
| |
end--;
| |
| |
| |
return StringSubstr(str, start, end - start + 1);
| |
}
| |
| |
//+------------------------------------------------------------------+
| |
//| Macro para generar funciones dentro del namespace |
| |
//+------------------------------------------------------------------+
| |
namespace StrTo
| |
{
| |
#define DEFINE_STRING_TO_ARRAY(TYPE, CONVERT_FUNC) \
| |
bool CstArray(TYPE &array_receptor[], const string &cadena, ushort cadena_separator = ',', bool trim = false) \
| |
{ \
| |
string result[]; \
| |
ResetLastError(); \
| |
int num = StringSplit(cadena, cadena_separator, result); \
| |
if(num == -1) \
| |
return false; \
| |
\
| |
if(ArrayResize(array_receptor, ArraySize(result)) == -1) \
| |
return false; \
| |
\
| |
for(int i = 0; i < ArraySize(array_receptor); i++) \
| |
{ \
| |
string trim_str = trim ? StringTrimChar(result[i]) : result[i]; \
| |
array_receptor[i] = CONVERT_FUNC; \
| |
} \
| |
return true; \
| |
}
| |
| |
| |
| |
// Generar funciones sobrecargadas para cada tipo
| |
DEFINE_STRING_TO_ARRAY(string, trim_str)
| |
DEFINE_STRING_TO_ARRAY(int, (int)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(long, StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(short, (short)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(char, (char)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(bool, (StringToInteger(trim_str) != 0))
| |
DEFINE_STRING_TO_ARRAY(uint, (uint)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(ulong, (ulong)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(uchar, (uchar)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(ushort, (ushort)StringToInteger(trim_str))
| |
DEFINE_STRING_TO_ARRAY(double, StringToDouble(trim_str))
| |
DEFINE_STRING_TO_ARRAY(float, (float)StringToDouble(trim_str))
| |
DEFINE_STRING_TO_ARRAY(datetime, StringToTime(trim_str))
| |
DEFINE_STRING_TO_ARRAY(color, StringToColor(trim_str))
| |
| |
#undef DEFINE_STRING_TO_ARRAY
| |
}
| |
//+------------------------------------------------------------------+
| |
#endif // MQLARTICLES_UTILS_FA_STRINGTOARRAY_MQH |