Общие вопросы по разработке > Глобальная переменная типа Types.DateTime не видна в коде индикатора

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
BugsDigger
Сообщения: 333
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Глобальная переменная типа Types.DateTime не видна в коде индикатора

Непрочитанное сообщение BugsDigger » 16 янв 2019, 20:08

Привет всем.

Когда я пытаюсь в индикаторе объявить глобальную переменную

AddGlobalVariable("OpenTime", Types.DateTime);

(согласно документации это возможно), то при попытке ее использования, например,

OpenTime=AsTime(0, 0, 0);

компилятор ругается, что такой переменной нет...
В чем проблема?.. С другими типами всё ОК...

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Глобальная переменная типа Types.DateTime не видна в коде индикатора

Непрочитанное сообщение evge » 16 янв 2019, 20:52

Ответ здесь
никогда такого не было и вот опять

BugsDigger
Сообщения: 333
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: Глобальная переменная типа Types.DateTime не видна в коде индикатора

Непрочитанное сообщение BugsDigger » 17 янв 2019, 06:06

Привет, evge, спасибо за подсказку. (Хорошо бы ее внести в FAQ.)

Однако, не совсем понятно, почему диагностика компилятора идет "переменной <Имя> нет в контексте" (т.е. якобы не объявлена) вместо чего-то более правильного вроде "невозможно сконвертировать". Похоже на баг. Даже можно предположить, что парсер секции инициализации при неуспехе иициализации переменной вместо выдачи ошибки тупо игнорирует декларацию. Но не помогает даже декларация БЕЗ инициализации (есть же такой вариант, документирован); ведь в этом случае за сценой д.б. присвоено значение по умолчанию, _совместимое_ с типом переменной, т.е. инициализация д. пройти без ошибки, и переменная д.б. доступна в секции Evaluate по-любому.

AP_Bor
Сообщения: 167
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Глобальная переменная типа Types.DateTime не видна в коде индикатора

Непрочитанное сообщение AP_Bor » 17 янв 2019, 12:23

Доброго времени суток, BugsDigger
BugsDigger писал(а):Однако, не совсем понятно, почему диагностика компилятора идет "переменной <Имя> нет в контексте"
1) Для AddGlobalVariable ==> AdsPropertyStr ==> string.
2) Для AddGlobalVariable третий параметр по умолчанию равен null, а DateTime c точки зрения C# - имеет не обнуляемый тип значения по умолчанию(datetime is non-nullable value type).
AdsPropertyStr = null = "", что не может конвертироваться в дату.
Мысли вслух писал(а):Еще больше запутал. :oops:
► Показать
С наилучшими пожеланиями


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей