Привет, Виктор! А это смотрел?
4059 | ERR_FUNC_NOT_ALLOWED_IN_TESTING | Функция не разрешена в тестовом режиме |
Может, что-то изменили!?
Борис, Здарова. Да, видел. Накидывал на график (на демо), там уже другая картина:
00:16:03 BaseTemplate EURUSD,M1: Logging => CreatWorkingSMBArray() => Ошибка № 0 :: Ошибка при работе с объектомЭто вообще нонсенс какой-то...
Борис, Здарова. Да, видел. Накидывал на график (на демо), там уже другая картина:
Это вообще нонсенс какой-то...
Ты знаешь, я в дебри не лезу! Если обнаруживаю какую-то ошибку, ищу другим путём добиться того же! Тогда меньше будет задержек на Реале! Пока там ещё у них всё утрясётся с заменами и преобразованиями, пилю на старом, и всё работает без ошибок!
Ты знаешь, я в дебри не лезу! Если обнаруживаю какую-то ошибку, ищу другим путём добиться того же! Тогда меньше будет задержек на Реале! Пока там ещё у них всё утрясётся с заменами и преобразованиями, пилю на старом, и всё работает без ошибок!
Тут не дебри. Смотри, Борис, Ситуацию:
Вот конец метода:
... Print ("_LastError_9 = ", _LastError); //---- Контролируем возможные ошибки CLogging.Printing (StringConcatenate ("CreatWorkingSMBArray() => ", CErrs.ErrorToString (_LastError))); Print ("_LastError_10 = ", _LastError); //---- return (li_CntOfSMB); }
До и перед строкой:
CLogging.Printing (StringConcatenate ("CreatWorkingSMBArray() => ", CErrs.ErrorToString (_LastError)));Ошибок нет! Внутри неё ошибка с индексом 0, но описание ошибки: Ошибка при работе с объектом.
Принтую то что внутри и там ошибок нет ни в начале функции, ни внутри! Получается какой-то обсурд. Ошибок нигде нет, в коде функций, из которых состоит проблемная функция, а в конце проблемной функции вылазить ошибка 0, с описанием Ошибка при работе с объектом.
Интересно, кто-нить мне сможет объяснить логически в чём тут причина?
Более того. Разобрав ту строчку что повыше сказал на части. Принтанул. И заметил вообще не логичную ситуацию. Вот:
// 1.2 Выводим на печать и (или) на график комментарии. =================================================================================== Logging::Printing (string fs_Text, // Возвращаемая пустая строка bool fb_PrintUP = true, // Флаг печати комментариев bool fb_CommentUP = true) // Флаг показа комментариев на графике { LibName = "Logging"; Print ("_( Logging )LastError_1 = ", _LastError); if (StringLen (fs_Text) > 0) { Print ("_( Logging )LastError_2 = ", _LastError); if (LibName != "") fs_Text = StringConcatenate (LibName, " => ", fs_Text); Print ("_( Logging )LastError_3 = ", _LastError); if (fb_PrintUP) Print (fs_Text); Print ("_( Logging )LastError_4 = ", _LastError); if (fb_CommentUP) Comment (fs_Text); } //---- Очищаем переменную //fs_Txt = ""; Print ("_( Logging )LastError_5 = ", _LastError); return; }
Вот лог:
23:40:52 BaseTemplate EURUSD,M5 inputs: _Position_Properties= _______________ Position_Properties _____________ ; idt_Expiration=0; id_Lots=0.1; id_SL=0.0; id_TP=10.0; ii_Slippage=2; _BaseInfo= ____________________ BaseInfo ___________________ ; ib_Bootstrap=false; ib_RealTrade=true; ib_VirtualTrade=true; _Logging= ____________________ Logging ____________________ ; ib_NeedLogs=true; ib_PrintUP=true; ib_CommentUP=true; _Make_List_Of_Symbols= ______________ Make List Of Symbols _____________ ; is_ListOfWorkingSMB=; is_ListOfMagic=3333021; is_BaseCurrencyList=USD,EUR,JPY,CHF,GBP,CAD,AUD; is_BadCurrencyList=NZD; ii_MaxSpread=50; _CTradingFunc= __________________ CTradingFunc _________________ ; ii_NumberOfTry=10; ic_ColorSendBuy=16711680; ic_ColorSendSell=255; ic_ColorCloseBuy=32768; ic_ColorCloseSell=16711935; ic_ColorModifyBuy=55295; ic_ColorModifySell=16776960; _MM= _______________________ MM ______________________ ; ib_LotMoreMaxLot=false; 23:40:53 BaseTemplate EURUSD,M5: _LastError_9 = 0 23:40:53 BaseTemplate EURUSD,M5: _( ErrorDescription )LastError_1 = 0 23:40:53 BaseTemplate EURUSD,M5: _( ErrorDescription )LastError_3 = 0 23:40:53 BaseTemplate EURUSD,M5: _( Logging )LastError_1 = 0 23:40:53 BaseTemplate EURUSD,M5: _( Logging )LastError_2 = 0 23:40:53 BaseTemplate EURUSD,M5: _( Logging )LastError_3 = 0 23:40:53 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Ошибка № 0 :: Ошибка при работе с объектом 23:40:53 BaseTemplate EURUSD,M5: _( Logging )LastError_4 = 0 23:40:53 BaseTemplate EURUSD,M5: _( Logging )LastError_1 = 0 23:40:53 BaseTemplate EURUSD,M5: _LastError_10 = 0 23:40:53 BaseTemplate EURUSD,M5: initialized 23:40:57 BaseTemplate EURUSD,M5: Количество финансовых истументов в окне `Обзор рынка` Alpari Limited равно 135И выше приведённого в этом посте видно где появилась ошибка с номером 0, и описанием Ошибка при работе с объектом. Вроде бы всё элементарно просто и верно. Что тут может быть не так? Ошибка уже явно в этой функции... По логу то видно...
Виктор, скорей всего они ещё не доделали! А ты хочешь быстрее их освоить то, до чего у них руки дошли! Потому я не спешу, вот осваиваю 8-ку 64 бит, будь она неладна, сделали всё на подобие мобильника, всё летает, не стоит на месте, добиваюсь, чтобы убрать это мельтешение! Сделали забаву для детей, и сайтовских сплетен! И тут пришла мода для дурачков! :((
Я 8-ку вообще не планирую ставить. Метро мне как-то не по душе. Пусть разработчики сами им пользуются. У меня и 7-ка летает...
А так да, Борис, Вы правы! Косяк похоже всё-таки в недоработке языка. Видать что-то не доделали. В сервисдеске пока молчат. Видать сказать не чего им мне.
Кто выдаёт строчку "Ошибка при работе с объектом"? На 99 процентов этот кто-то вызывает функцию GetLastError(), которая обнуляет переменную _LastError
Даже если б переменная _LastError обнулялась, то причём тут "Ошибка при работе с объектом" ? Типа обнулили переменную и на те ошибку "Ошибка при работе с объектом" ? Это типа нормально?
Так согласно документации что-ли должно быть?
stringo, поймите правильно. Я не ставлю задачу искать недоработки в языке и есс-но мне не хочется подымать подобные разговоры. Но у меня хватает не реализованных идей, который нужно делать. И делать я это хочу с максимальным комфортом. Я уже перешёл на ООП суцельно, и ой как не хочется возвращаться к писанине "Всё в одном". Потому и прошу помочь понять что происходит в некоторых ситуациях...
Кто выдаёт строчку "Ошибка при работе с объектом"? На 99 процентов этот кто-то вызывает функцию GetLastError(), которая обнуляет переменную _LastError
Нет, функция GetLastError() не вызывается вообще. Я уже понял, что ругань даже не в том классе, который я публиковал, а именно, в строке... В одной строке! Я её перенёс в функцию OnTick() эксперта-пустышки. Чтобы проверить всё наверняка. Вот что имеем:
void OnTick() { //--- Print ("_LastError_9 = ", _LastError); CLogging.Printing (StringConcatenate ("CreatWorkingSMBArray() => ", CErrs.ErrorToString (_LastError))); Print ("_LastError_10 = ", _LastError); }
Классы, используемые в коде прикрепляю к сообщению.
Так вот если в любой компилируемый эксперт вписать то, что я опубликовал и в шапке добавить классы:
#include <HOZ_Code\Classes\HandlingWithErrors.mqh> #include <HOZ_Code\Classes\Logging.mqh>То становится понятным, что тут есть какой-то косяк. Вопрос только какой. Ведь я передаю строку как и положено соответствующим методом.
Вот, кстати, лог:
2014.08.05 12:07:59.627 Expert BaseTemplate EURUSD,M5: removed 2014.08.05 12:07:59.626 BaseTemplate EURUSD,M5: uninit reason 1 2014.08.05 12:07:58.822 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:58.822 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:58.822 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:57.646 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:57.646 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:57.646 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:56.798 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:56.798 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:56.798 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:53.968 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:53.968 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:53.968 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:53.558 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:53.558 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:53.558 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:53.183 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:53.183 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:53.183 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:51.539 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:51.539 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:51.539 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:46.243 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:46.243 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:46.243 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:44.621 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:44.621 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:44.621 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:44.189 BaseTemplate EURUSD,M5: _LastError_10 = 0 2014.08.05 12:07:44.189 BaseTemplate EURUSD,M5: Logging => CreatWorkingSMBArray() => Îøèáêà ¹ 0 :: Îøèáêà ïðè ðàáîòå ñ îáúåêòîì 2014.08.05 12:07:44.189 BaseTemplate EURUSD,M5: _LastError_9 = 0 2014.08.05 12:07:39.897 BaseTemplate EURUSD,M5: initialized 2014.08.05 12:07:39.770 BaseTemplate EURUSD,M5 inputs: _Position_Properties= _______________ Position_Properties _____________ ; idt_Expiration=0; id_Lots=0.1; id_SL=0.0; id_TP=10.0; ii_Slippage=2; _BaseInfo= ____________________ BaseInfo ___________________ ; ib_Bootstrap=false; ib_RealTrade=true; ib_VirtualTrade=true; _Logging= ____________________ Logging ____________________ ; ib_NeedLogs=true; ib_PrintUP=true; ib_CommentUP=true; _Make_List_Of_Symbols= ______________ Make List Of Symbols _____________ ; is_ListOfWorkingSMB=; 2014.08.05 12:07:38.571 Expert BaseTemplate EURUSD,M5: loaded successfully
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть функция, для возвращения массива с рабочими инструментами. В процессе её использования возникли проблемки. Комментируя функции, я обнаружил, что в классе, в котором данная функция находится если закомментить эту функцию, то всё работает без ошибок и не каких ошибок терминал не возвращает. Если же эту функция раскомментить, то сразу же возникает ошибка 4059. Есс-но я понял, что косяк именно в этой функции. Потому её и нужно штудировать..
Вот функция с расставленными принтами типа: Print ("_LastError_( номер коммента ) = ", _LastError);
Входящие данные ИНПУТ такие:
По ходу, если просмотреть лог, то становится ясно, что ошибка возникает в процессе вложенного цикла. Вот что интересно, в логе:
Во втором принте значение _LastError_2 равно сразу 0, а потом 4059 становится и так постоянно уже. Смотря в код, я не понимаю, где может быть ошибка. Вроде всё написано верно. Компилируется всё без ошибок и предупреждений...Весь класс, который тут используется прилагаю к сообщению. Глобальные переменные я уже показал. И 2 метода, которые используются в проблемной функции MakeStrArrayFromLine и InitializeArraySTR вот:
Причём тут ошибка 4059, которая говорит мол ошибка при работе с объектами? Так в цикле и объектов то нет...