WorkflowsByLeo/Src/Steps/File.mqh

128 lines
4.7 KiB
MQL5
Raw Permalink Normal View History

2026-04-09 21:45:13 -05:00
//+------------------------------------------------------------------+
//| File.mqh |
//| Copyright 2026,Niquel Mendoza. |
//| https://www.mql5.com/en/users/nique_372 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026,Niquel Mendoza."
#property link "https://www.mql5.com/en/users/nique_372"
#property strict
2026-04-10 15:42:19 -05:00
#ifndef WORKFLOWSBYLEO_STEPS_FILE_MQH
#define WORKFLOWSBYLEO_STEPS_FILE_MQH
2026-04-09 21:45:13 -05:00
//+------------------------------------------------------------------+
//| Include |
//+------------------------------------------------------------------+
#include "..\\Final\\Orquestador.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CWorkStepFileWrite : public CWorkflowStep
{
private:
string m_content;
int m_file_flags;
string m_file_name;
public:
CWorkStepFileWrite(void) : CWorkflowStep("WriteInFile", "File", false, 0) {}
~CWorkStepFileWrite(void) {}
//---
bool Init(const CYmlNode& parameters) override final;
int Run() override final;
};
//---
WORKFLOWS_FACTORY_DEFINE_CREATOR(CWorkStepFileWrite, FileFileWrite, "WriteInFile", "File")
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CWorkStepFileWrite::Init(const CYmlNode &parameters)
{
//--- File flags
m_file_flags = FILE_WRITE;
CYmlIteratorArray itarr = parameters["open_flags"].BeginArr();
while(itarr.IsValid())
{
int v = 0;
2026-04-10 15:42:19 -05:00
const string val = m_wf.TranslateStr(itarr.Val(), "");
2026-04-09 21:45:13 -05:00
if(CEnumReg::s_dict.TryGetAs(val, v))
{
m_file_flags |= v;
}
itarr.Next();
}
//---
2026-04-10 15:42:19 -05:00
m_content = m_wf.TranslateStr(parameters["content"], "");
2026-04-09 21:45:13 -05:00
//---
2026-04-10 15:42:19 -05:00
m_file_name = m_wf.TranslateStr(parameters["file_name"], "");
2026-04-09 21:45:13 -05:00
//---
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CWorkStepFileWrite::Run(void)
{
::ResetLastError();
const int fh = FileOpen(m_file_name, m_file_flags);
if(fh == INVALID_HANDLE)
{
LogError(StringFormat("Fallo al abrir el archivo %s, ultimo err = %d", m_file_name, ::GetLastError()), FUNCION_ACTUAL);
return ::GetLastError() == 0 ? 1 : (::GetLastError());
2026-04-09 21:45:13 -05:00
}
FileWriteString(fh, m_content);
FileClose(fh);
return 0;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CWorkStepFileDelete : public CWorkflowStep
{
private:
int m_common_flag;
string m_file_name;
public:
CWorkStepFileDelete(void) : CWorkflowStep("FileDelete", "File", false, 0) {}
~CWorkStepFileDelete(void) {}
//---
bool Init(const CYmlNode& parameters) override final;
int Run() override final;
};
//---
WORKFLOWS_FACTORY_DEFINE_CREATOR(CWorkStepFileDelete, FileFileDelete, "FileDelete", "File")
2026-04-09 21:45:13 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CWorkStepFileDelete::Init(const CYmlNode &parameters)
{
//---
m_common_flag = m_wf.TranslateBool(parameters["common_flag"], "false") ? FILE_COMMON : 0;
m_file_name = m_wf.TranslateStr(parameters["file_name"], "");
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CWorkStepFileDelete::Run(void)
{
::ResetLastError();
if(!FileDelete(m_file_name, m_common_flag))
{
LogError(StringFormat("Fallo al eliminar el archivo %s, ultimo err = %d", m_file_name, ::GetLastError()), FUNCION_ACTUAL);
return ::GetLastError() == 0 ? 1 : (::GetLastError());
}
return 0;
}
2026-04-10 15:42:19 -05:00
#endif // WORKFLOWSBYLEO_STEPS_FILE_MQH
2026-04-09 21:45:13 -05:00
//+------------------------------------------------------------------+