CClock - Extend of CFile class to work with the .set

Installation

  • Put FileSet.mqh into your Include\Files folder
  • Put Test.set into your Files\ folder
  • Put FileSet Test.mqh into your Scripts folder
  • Use one of the samples that shows the usage

Inputs

  • FileName : the filename of the .set file

Methods

//--- methods for working with files
   int               Open(const string file_name,const int open_flags);
   //--- methods of access to protected data
   int               Count(void);
   bool              ContainsKey(string key);
   //--- methods to access data
   template<typename TValue>
   bool              TryGetValue(const string key, TValue &value);
   bool              TryGetValue(const string key, string &value);

Usage

#include <Files\FileSet.mqh>

CFileSet FileSet;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   FileSet.Open("Test.set",FILE_READ|FILE_SHARE_READ);
   char test_char;
   if(FileSet.TryGetValue("InpTestChar",test_char))
      Print(test_char);
   short test_short;
   if(FileSet.TryGetValue("InpTestShort",test_short))
      Print(test_short);
   int test_int;
   if(FileSet.TryGetValue("InpTestInteger",test_int))
      Print(test_int);
   long test_long;
   if(FileSet.TryGetValue("InpTestLong",test_long))
      Print(test_long);
   float test_float;
   if(FileSet.TryGetValue("InpTestFloat",test_float))
      Print(test_float);
   double test_double;
   if(FileSet.TryGetValue("InpTestDouble",test_double))
      Print(test_double);
   string test_string;
   if(FileSet.TryGetValue("InpTestString",test_string))
      Print(test_string);
   bool test_bool;
   if(FileSet.TryGetValue("InpTestBool",test_bool))
      Print(test_bool);
   datetime test_datetime;
   if(FileSet.TryGetValue("InpTestDatetime",test_datetime))
      Print(TimeToString(test_datetime,TIME_DATE|TIME_SECONDS));
   color test_color;
   if(FileSet.TryGetValue("InpTestColor",test_color))
      Print(ColorToString(test_color,true));
   ENUM_TEST test_enum;
   if(FileSet.TryGetValue("InpTestEnum",test_enum))
      Print(EnumToString(test_enum));
   FileSet.Close();
  }
//+------------------------------------------------------------------+

It should show the below result with the sample file (Test.set)

2021.05.31 05:09:27.546 FileSet Test (EURUSD,H1)        97
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        32767
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        2147483647
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        9223372036854775807
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        1.00001
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        2.225073858507201e-308
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        This is InpTestString
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        false
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        2000.01.01 00:00:00
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        clrBlack
2021.05.31 05:09:27.548 FileSet Test (EURUSD,H1)        TEST3