128 lines
4.7 KiB
MQL5
128 lines
4.7 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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
|
|
|
|
|
|
#ifndef WORKFLOWSBYLEO_STEPS_FILE_MQH
|
|
#define WORKFLOWSBYLEO_STEPS_FILE_MQH
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| 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 ¶meters)
|
|
{
|
|
//--- File flags
|
|
m_file_flags = FILE_WRITE;
|
|
CYmlIteratorArray itarr = parameters["open_flags"].BeginArr();
|
|
while(itarr.IsValid())
|
|
{
|
|
int v = 0;
|
|
const string val = m_wf.TranslateStr(itarr.Val(), "");
|
|
if(CEnumReg::s_dict.TryGetAs(val, v))
|
|
{
|
|
m_file_flags |= v;
|
|
}
|
|
itarr.Next();
|
|
}
|
|
|
|
//---
|
|
m_content = m_wf.TranslateStr(parameters["content"], "");
|
|
|
|
//---
|
|
m_file_name = m_wf.TranslateStr(parameters["file_name"], "");
|
|
|
|
//---
|
|
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());
|
|
}
|
|
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")
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CWorkStepFileDelete::Init(const CYmlNode ¶meters)
|
|
{
|
|
//---
|
|
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;
|
|
}
|
|
|
|
#endif // WORKFLOWSBYLEO_STEPS_FILE_MQH
|
|
//+------------------------------------------------------------------+
|