Страница 1 из 1

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

Добавлено: 16 янв 2019, 20:08
BugsDigger
Привет всем.

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

AddGlobalVariable("OpenTime", Types.DateTime);

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

OpenTime=AsTime(0, 0, 0);

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

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

Добавлено: 16 янв 2019, 20:52
evge
Ответ здесь

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

Добавлено: 17 янв 2019, 06:06
BugsDigger
Привет, evge, спасибо за подсказку. (Хорошо бы ее внести в FAQ.)

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

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

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