forked from nique_372/BasesParserSLan
80 lines
2.5 KiB
MQL5
80 lines
2.5 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| ErrorFormat.mqh |
| |
//| Copyright 2026, Niquel Mendoza. |
| |
//| https://www.mql5.com |
| |
//+------------------------------------------------------------------+
| |
#property copyright "Copyright 2026, Niquel Mendoza."
| |
#property link "https://www.mql5.com"
| |
#property strict
| |
| |
#ifndef BASESPARSERSLAN_SRC_UTILS_ERRFORMAT_MQH
| |
#define BASESPARSERSLAN_SRC_UTILS_ERRFORMAT_MQH
| |
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
namespace TSN
| |
{
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
class CParserErrFormat
| |
{
| |
public:
| |
CParserErrFormat(void) {}
| |
~CParserErrFormat(void) {}
| |
| |
| |
static void Format(const int len, const uchar& buffer[], const int line, int
| |
const col, const string& err, string& out);
| |
};
| |
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
static void CParserErrFormat::Format(const int len, const uchar &buffer[], const int line,
| |
const int col, const string &err, string &out)
| |
{
| |
| |
//--- buscamos el infal
| |
int col_end = col, col_start = col;
| |
// Print(buffer[col]);
| |
if(buffer[col] != '\n') // no es... buscamos los dos... arriba y abajo
| |
{
| |
if(line == 1)
| |
col_end = len;
| |
else
| |
while(++col_end < len && buffer[col_end] != '\n') {}
| |
}
| |
| |
//--- start
| |
if(line == 1)
| |
col_start = 0;
| |
else
| |
while(--col_start >= 0 && buffer[col_start] != '\n') {}
| |
| |
| |
//---
| |
int col_len = (col_end - col_start);
| |
| |
//---
| |
StringReserve(out, (col_len << 1) + StringLen(err) + 4);
| |
| |
//---
| |
out += err + "\n"; // error tal cual
| |
out += CharArrayToString(buffer, col_start, col_len, CP_UTF8) + "\n"; // linea donde ocurre
| |
| |
//---
| |
for(int i = 1; i < col; i++)
| |
out += " ";
| |
| |
//---
| |
out += "^";
| |
| |
//---
| |
for(int i = 1; i < col; i++)
| |
out += " ";
| |
}
| |
}
| |
#endif // BASESPARSERSLAN_SRC_UTILS_ERRFORMAT_MQH
| |
//+------------------------------------------------------------------+
|