MQL5:: Что я делаю не так?

 

Решил тут разобраться с ООП и начал с кодирования магика. Всё работает, но есть непонятка...

class myCMagik
{
private:
   long     magic_num;
   string   expert_name[];
   
   int      numExpertName(string name);
   int      numPeriod(int tmf);
   int      numChar(ushort chr);
   bool     readExpertName();
   bool     writeExprtName();
   
   string   numExpertNameDecode(int num);
   string   numPeriodDecode(int tmf);
   string   numCharDecode(int chr);
   
public:
   myCMagik();
   ~myCMagik();
   
   long     magic_set;        // устанавливаемый магик
   
   bool  codeExpertMagic(string prog_name, string prog_ver);
   void  decodeExpertMagic(ulong magic);
};
//+------------------------------------------------------------------+
bool  myCMagik::codeExpertMagic(string prog_name, string prog_ver)
{
   string corrent_expert_name = prog_name+" V."+prog_ver;
   if(readExpertName())
   {
      for(int i = 0; i < ArraySize(expert_name); i++)
      {
         StringTrimRight(expert_name[i]);
         if(corrent_expert_name == expert_name[i]) break;
         else
         {
            ArrayResize(expert_name,ArraySize(expert_name) + 1);
            expert_name[ArraySize(expert_name) - 1] = corrent_expert_name;
            writeExprtName();
         }
      }
   }
   else
   {
      ArrayResize(expert_name,1);
      expert_name[0] = corrent_expert_name;
      writeExprtName();
   }
............
}
............
//+------------------------------------------------------------------+
bool  myCMagik::readExpertName()
{
   uint     count       = 0;
   
   string   dir         = AccountInfoString(ACCOUNT_COMPANY);
                          StringReplace(dir," ","_");
   string   filename    = dir+"\\myExpertName.txt";
   if(FileIsExist(filename,FILE_COMMON))
   {
      int      filehandle  = FileOpen(filename,FILE_READ|FILE_TXT|FILE_COMMON);
      if(filehandle != INVALID_HANDLE)
      {
         count = FileReadArray(filehandle,expert_name);
         
         FileClose(filehandle);
         FileDelete(filename,FILE_COMMON);
         
         Print("Прочитан массив имён экспертов...");
      }
   }
   
   return(count == 0 ? false : true);
}
//+------------------------------------------------------------------+
bool  myCMagik::writeExprtName()
{
   uint     count       = 0;
   
   string   dir         = AccountInfoString(ACCOUNT_COMPANY);
                          StringReplace(dir," ","_");
   string   filename    = dir+"\\myExpertName.txt";
   int      filehandle  = FileOpen(filename,FILE_WRITE|FILE_TXT|FILE_COMMON);
   if(filehandle != INVALID_HANDLE)
   {
      count = FileWriteArray(filehandle,expert_name);

      FileClose(filehandle);
         
      Print("Записан массив имён экспертов...");
   }
   
   return(count == 0 ? false : true);
}
//+------------------------------------------------------------------+

При оптимизации наблюдаю такую картину: в тотал коммандере вижу созданный файл myExpertName.txt

Через некоторое время он пропадает, а затем опять появляется.

Что его удаляет и почему?


Опять простая невнимательность (((