Раньше этот код работал, а сейчас при компиляции ошибка, почему ?

 

';' - unexpected token    CodeErrors.mqh    10    5



class CodeErrors
{
private:
   
   // Структура для хранения информации об ошибке и элементы, использующие эту структуру
   struct Code
   {
      int code;      // Код ошибки
      string desc;   // Описание кода ошибки
   };
   Code Errors[];    // Массив, содержащий коды ошибок и их описания
   short  _CountErrors;     // Количество ошибок, содержащихся в массиве Errors[]
   
public:
   // Конструктор
   CodeErrors(void);
        
   string CodeError(int nErr = 0);   // Возвращает описание ошибки по номеру, либо текущей, если номер не указан
   
};

void CodeErrors::CodeErrors(void)
{
   
   _CountErrors = 150;

   ArrayResize(Errors, _CountErrors);
   // Коды возврата торгового сервера
   Errors[0].code = 10004;Errors[0].desc = "Реквота";
   Errors[1].code = 10006;Errors[1].desc = "Запрос отвергнут";
   Errors[2].code = 10007;Errors[2].desc = "Запрос отменен трейдером";
   Errors[3].code = 10008;Errors[3].desc = "Ордер размещен";
   Errors[4].code = 10009;Errors[4].desc = "Заявка выполнена";
   Errors[5].code = 10010;Errors[5].desc = "Заявка выполнена частично";
   Errors[6].code = 10011;Errors[6].desc = "Ошибка обработки запроса";
   Errors[7].code = 10012;Errors[7].desc = "Запрос отменен по истечению времени";
   Errors[8].code = 10013;Errors[8].desc = "Неправильный запрос";
   Errors[9].code = 10014;Errors[9].desc = "Неправильный объем в запросе";
   Errors[10].code = 10015;Errors[10].desc = "Неправильная цена в запросе";
   Errors[11].code = 10016;Errors[11].desc = "Неправильные стопы в запросе";
   Errors[12].code = 10017;Errors[12].desc = "Торговля запрещена";
   Errors[13].code = 10018;Errors[13].desc = "Рынок закрыт";
   Errors[14].code = 10019;Errors[14].desc = "Нет достаточных денежных средств для выполнения запроса";
   Errors[15].code = 10020;Errors[15].desc = "Цены изменились";
   Errors[16].code = 10021;Errors[16].desc = "Отсутствуют котировки для обработки запроса";
   Errors[17].code = 10022;Errors[17].desc = "Неверная дата истечения ордера в запросе";
   Errors[18].code = 10023;Errors[18].desc = "Состояние ордера изменилось";
   Errors[19].code = 10024;Errors[19].desc = "Слишком частые запросы";
   Errors[20].code = 10025;Errors[20].desc = "В запросе нет изменений";
   Errors[21].code = 10026;Errors[21].desc = "Автотрейдинг запрещен сервером";
   Errors[22].code = 10027;Errors[22].desc = "Автотрейдинг запрещен клиентским терминалом";
   Errors[23].code = 10028;Errors[23].desc = "Запрос заблокирован для обработки";
   Errors[24].code = 10029;Errors[24].desc = "Ордер или позиция заморожены";
   Errors[25].code = 10030;Errors[25].desc = "Указан неподдерживаемый тип исполнения ордера по остатку";

   // Общие ошибки
   Errors[26].code = 4001;Errors[26].desc = "Неожиданная внутренняя ошибка";
   Errors[27].code = 4002;Errors[27].desc = "Ошибочный параметр при внутреннем вызове функции клиентского терминала";
   Errors[28].code = 4003;Errors[28].desc = "Ошибочный параметр при вызове системной функции";
   Errors[29].code = 4004;Errors[29].desc = "Недостаточно памяти для выполнения системной функции";
   Errors[30].code = 4005;Errors[30].desc = "Структура содержит объекты строк и/или динамических массивов и/или структуры с такими объектами и/или классы";
   Errors[31].code = 4006;Errors[31].desc = "Массив неподходящего типа, неподходящего размера или испорченный объект динамического массива";
   Errors[32].code = 4007;Errors[32].desc = "Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива";
   Errors[33].code = 4008;Errors[33].desc = "Недостаточно памяти для перераспределения строки";
   Errors[34].code = 4009;Errors[34].desc = "Неинициализированная строка";
   Errors[35].code = 4010;Errors[35].desc = "Неправильное значение даты и/или времени";
   Errors[36].code = 4011;Errors[36].desc = "Запрашиваемый размер массива превышает 2 гигабайта";
   Errors[37].code = 4012;Errors[37].desc = "Ошибочный указатель";
   Errors[38].code = 4013;Errors[38].desc = "Ошибочный тип указателя";
   Errors[39].code = 4014;Errors[39].desc = "Системная функция не разрешена для вызова";

   // Графики
   Errors[40].code = 4101;Errors[40].desc = "Ошибочный идентификатор чарта";
   Errors[41].code = 4102;Errors[41].desc = "Чарт не отвечает";
   Errors[42].code = 4103;Errors[42].desc = "Чарт не найден";
   Errors[43].code = 4104;Errors[43].desc = "У чарта нет эксперта, который мог бы обработать событие";
   Errors[44].code = 4105;Errors[44].desc = "Ошибка открытия чарта";
   Errors[45].code = 4106;Errors[45].desc = "Ошибка при изменении у чарта символа и периода";
   Errors[46].code = 4107;Errors[46].desc = "Ошибочный параметр для таймера";
   Errors[47].code = 4108;Errors[47].desc = "Ошибка при создании таймера";
   Errors[48].code = 4109;Errors[48].desc = "Ошибочный идентификатор свойства чарта";
   Errors[49].code = 4110;Errors[49].desc = "Ошибка при создании скриншота";
   Errors[50].code = 4111;Errors[50].desc = "Ошибка навигации по чарту";
   Errors[51].code = 4112;Errors[51].desc = "Ошибка при применении шаблона";
   Errors[52].code = 4113;Errors[52].desc = "Подокно, содержащее указанный индикатор, не найдено";

   // Графические объекты
   Errors[53].code = 4201;Errors[53].desc = "Ошибка при работе с графическим объектом";
   Errors[54].code = 4202;Errors[54].desc = "Графический объект не найден";
   Errors[55].code = 4203;Errors[55].desc = "Ошибочный идентификатор свойства графического объекта";
   Errors[56].code = 4204;Errors[56].desc = "Невозможно получить дату, соответствующую значению";
   Errors[57].code = 4205;Errors[57].desc = "Невозможно получить значение, соответствующее дате";
   
   // MarketInfo   
   Errors[58].code = 4301;Errors[58].desc = "Неизвестный символ";
   Errors[59].code = 4302;Errors[59].desc = "Символ не выбран в MarketWatch";
   Errors[60].code = 4303;Errors[60].desc = "Ошибочный идентификатор свойства символа";
   Errors[61].code = 4304;Errors[61].desc = "Время последнего тика неизвестно (тиков не было)";
   
   // Доступ к истории
   Errors[62].code = 4401;Errors[62].desc = "Запрашиваемая история не найдена";
   Errors[63].code = 4402;Errors[63].desc = "Ошибочный идентификатор свойства истории";
   
   // Global_Variables
   Errors[64].code = 4501;Errors[64].desc = "Глобальная переменная клиентского терминала не найдена";
   Errors[65].code = 4502;Errors[65].desc = "Глобальная переменная клиентского терминала с таким именем уже существует";
   Errors[66].code = 4510;Errors[66].desc = "Не удалось отправить письмо";
   Errors[67].code = 4511;Errors[67].desc = "Не удалось воспроизвести звук";
   Errors[68].code = 4512;Errors[68].desc = "Ошибочный идентификатор свойства программы";
   Errors[69].code = 4513;Errors[69].desc = "Ошибочный идентификатор свойства терминала";
   Errors[70].code = 4514;Errors[70].desc = "Не удалось отправить файл по ftp";
   
   // Буфера пользовательских индикаторов
   Errors[71].code = 4601;Errors[71].desc = "Недостаточно памяти для распределения индикаторных буферов";
   Errors[72].code = 4602;Errors[72].desc = "Ошибочный индекс своего индикаторного буфера";
   
   // Свойства пользовательских индикаторов
   Errors[73].code = 4603;Errors[73].desc = "Ошибочный идентификатор свойства пользовательского индикатора";
   
   // Account
   Errors[74].code = 4701;Errors[74].desc = "Ошибочный идентификатор свойства счета";
   Errors[75].code = 4751;Errors[75].desc = "Ошибочный идентификатор свойства торговли";
   Errors[76].code = 4752;Errors[76].desc = "Торговля для эксперта запрещена";
   Errors[77].code = 4753;Errors[77].desc = "Позиция не найдена";
   Errors[78].code = 4754;Errors[78].desc = "Ордер не найден";
   Errors[79].code = 4755;Errors[79].desc = "Сделка не найдена";
   Errors[80].code = 4756;Errors[80].desc = "Не удалось отправить торговый запрос";
   Errors[81].code = 4757;Errors[81].desc = "Превышение таймаута при выборе (поиске) указанных данных";
   
   // Индикаторы
   Errors[82].code = 4801;Errors[82].desc = "Неизвестный символ";
   Errors[83].code = 4802;Errors[83].desc = "Индикатор не может быть создан";
   Errors[84].code = 4803;Errors[84].desc = "Недостаточно памяти для добавления индикатора";
   Errors[85].code = 4804;Errors[85].desc = "Индикатор не может быть применен к другому индикатору";
   Errors[86].code = 4805;Errors[86].desc = "Ошибка при добавлении индикатора";
   Errors[87].code = 4806;Errors[87].desc = "Запрошенные данные не найдены";
   Errors[88].code = 4807;Errors[88].desc = "Ошибочный индекс запрашиваемого индикаторного буфера";
   Errors[89].code = 4808;Errors[89].desc = "Неправильное количество параметров при создании индикатора";
   Errors[90].code = 4809;Errors[90].desc = "Отсутствуют параметры при создании индикатора";
   Errors[91].code = 4810;Errors[91].desc = "Первым параметром в массиве должно быть имя пользовательского индикатора";
   Errors[92].code = 4811;Errors[92].desc = "Неправильный тип параметра в массиве при создании индикатора";
   
   // Стакан цен
   Errors[93].code = 4901;Errors[93].desc = "Стакан цен не может быть добавлен";
   Errors[94].code = 4902;Errors[94].desc = "Стакан цен не может быть удален";
   Errors[95].code = 4903;Errors[95].desc = "Данные стакана цен не могут быть получены";
   Errors[96].code = 4904;Errors[96].desc = "Ошибка при подписке на получение новых данных стакана цен";
   
   // Файловые операции
   Errors[97].code = 5001;Errors[97].desc = "Не может быть открыто одновременно более 64 файлов";
   Errors[98].code = 5002;Errors[98].desc = "Недопустимое имя файла";
   Errors[99].code = 5003;Errors[99].desc = "Слишком длинное имя файла";
   Errors[100].code = 5004;Errors[100].desc = "Ошибка открытия файла";
   Errors[101].code = 5005;Errors[101].desc = "Недостаточно памяти для кеша чтения";
   Errors[102].code = 5006;Errors[102].desc = "Ошибка удаления файла";
   Errors[103].code = 5007;Errors[103].desc = "Файл с таким хэндлом уже был закрыт, либо не открывался вообще";
   Errors[104].code = 5008;Errors[104].desc = "Ошибочный хэндл файла";
   Errors[105].code = 5009;Errors[105].desc = "Файл должен быть открыт для записи";
   Errors[106].code = 5010;Errors[106].desc = "Файл должен быть открыт для чтения";
   Errors[107].code = 5011;Errors[107].desc = "Файл должен быть открыт как бинарный";
   Errors[108].code = 5012;Errors[108].desc = "Файл должен быть открыт как текстовый";
   Errors[109].code = 5013;Errors[109].desc = "Файл должен быть открыт как текстовый или CSV";
   Errors[110].code = 5014;Errors[110].desc = "Файл должен быть открыт как CSV";
   Errors[111].code = 5015;Errors[111].desc = "Ошибка чтения файла";
   Errors[112].code = 5016;Errors[112].desc = "Должен быть указан размер строки, так как файл открыт как бинарный";
   Errors[113].code = 5017;Errors[113].desc = "Для строковых массивов должен быть текстовый файл, для остальных – бинарный";
   Errors[114].code = 5018;Errors[114].desc = "Это не файл, а директория";
   Errors[115].code = 5019;Errors[115].desc = "Файл не существует";
   Errors[116].code = 5020;Errors[116].desc = "Файл не может быть переписан";
   Errors[117].code = 5021;Errors[117].desc = "Ошибочное имя директории";
   Errors[118].code = 5022;Errors[118].desc = "Директория не существует";
   Errors[119].code = 5023;Errors[119].desc = "Это файл, а не директория";
   Errors[120].code = 5024;Errors[120].desc = "Директория не может быть удалена";
   
   // Преобразование строк
   Errors[121].code = 5030;Errors[121].desc = "В строке нет даты";
   Errors[122].code = 5031;Errors[122].desc = "В строке ошибочная дата";
   Errors[123].code = 5032;Errors[123].desc = "В строке ошибочное время";
   Errors[124].code = 5033;Errors[124].desc = "Ошибка преобразования строки в дату";
   Errors[125].code = 5034;Errors[125].desc = "Недостаточно памяти для строки";
   Errors[126].code = 5035;Errors[126].desc = "Длина строки меньше, чем ожидалось";
   Errors[127].code = 5036;Errors[127].desc = "Слишком большое число, больше, чем ULONG_MAX";
   Errors[128].code = 5037;Errors[128].desc = "Ошибочная форматная строка";
   Errors[129].code = 5038;Errors[129].desc = "Форматных спецификаторов больше, чем параметров";
   Errors[130].code = 5039;Errors[130].desc = "Параметров больше, чем форматных спецификаторов";
   Errors[131].code = 5040;Errors[131].desc = "Испорченный параметр типа string";
   Errors[132].code = 5041;Errors[132].desc = "Позиция за пределами строки";
   Errors[133].code = 5042;Errors[133].desc = "К концу строки добавлен 0, бесполезная операция";
   Errors[134].code = 5043;Errors[134].desc = "Неизвестный тип данных при конвертации в строку";
   Errors[135].code = 5044;Errors[135].desc = "Испорченный объект строки";
   
   // Работа с массивами
   Errors[136].code = 5050;Errors[136].desc = "Копирование несовместимых массивов. Строковый массив может быть скопирован только в строковый, а числовой массив – в числовой";
   Errors[137].code = 5051;Errors[137].desc = "Приемный массив объявлен как AS_SERIES, и он недостаточного размера";
   Errors[138].code = 5052;Errors[138].desc = "Слишком маленький массив, стартовая позиция за пределами массива";
   Errors[139].code = 5053;Errors[139].desc = "Массив нулевой длины";
   Errors[140].code = 5054;Errors[140].desc = "Должен быть числовой массив";
   Errors[141].code = 5055;Errors[141].desc = "Должен быть одномерный массив";
   Errors[142].code = 5056;Errors[142].desc = "Таймсерия не может быть использована";
   Errors[143].code = 5057;Errors[143].desc = "Должен быть массив типа double";
   Errors[144].code = 5058;Errors[144].desc = "Должен быть массив типа float";
   Errors[145].code = 5059;Errors[145].desc = "Должен быть массив типа long";
   Errors[146].code = 5060;Errors[146].desc = "Должен быть массив типа int";
   Errors[147].code = 5061;Errors[147].desc = "Должен быть массив типа short";
   Errors[148].code = 5062;Errors[148].desc = "Должен быть массив типа char";
}


string CodeErrors::CodeError(int nErr=0)
{
   int ErrorNumber = nErr;
   string ReturnDesc = "";
   
   if (ErrorNumber > 0)
   {
      for (int i = 0;i<_CountErrors;i++)
      {
         if (Errors[i].code == ErrorNumber)
         {
            ReturnDesc = "Err "+nErr+" - "+Errors[i].desc;
            break;
         }
      }
   }
   else
   {
      ReturnDesc = "Нет описания ошибки по коду "+nErr;
   }
      
  
   return ReturnDesc;
}
 
Спасибо за сообщение, исправлено.

Причина обращения: