Как получить объект через GlobalDictionary?

Для передачи объекта через GlobalDictionary его необходимо создать, добавить в GlobalDictionary и затем прочитать, используя astype с указанием типа получаемого объекта.

В примере далее, создается объект книги Excel, который будет использоваться разными индикаторами и стратегиями совместно. Такой подход позволит избежать повторного открытия одной и той же книги. Таймер индикатора выполняет сохранение рабочей книги в файл, избавляя от этой работы другие инструменты теханализа. Во время оптимизации стратегии такое разделение труда позволяет экономить достаточно много времени и делает работу с Excel более удобной.

// Gelium_Helper 2013.09.20
Using elsystem; Using elsystem.collections; Using elsystem.io; using elsystem.office.excel;
Input: p_ExcelFile("C:\Chart\Gelium_Trader.xlsm"), p_ExcelVisible(true), p_ExcelDict("Gelium_Treader_Excel"), p_SaveTimer(60), p_Debug(0);
Vars: GlobalDictionary GExcel(Null), Workbook WB( NULL );
Method void ExcelOpen() begin If p_ExcelFile <> "" then begin Try GExcel = GlobalDictionary.Create(); If GExcel.Contains(p_ExcelDict) = False then begin If p_Debug > 0 then print("Открываем: ", p_ExcelFile); WB = new Workbook; WB.FileName = p_ExcelFile; WB.Load = true; GExcel.Add(p_ExcelDict, WB); end else begin WB = GExcel.Items[p_ExcelDict] astype Workbook; If p_Debug > 0 then print("Используем открытый: ", WB.FileName); end; WB.SaveOnClose = true; WB.Visible = p_ExcelVisible; // Показываем окно Excel WB.Load = true; // Загружаем файл для работы If p_Debug > 0 then print("Файл открыт успешно: ", p_ExcelFile); Timer1.Interval = p_SaveTimer * 1000; If Timer1.Interval < 1000 then Timer1.Interval = 1000; Timer1.Enable = (p_SaveTimer > 0); catch (exception ex) print("Ошибка открытия файла Excel: ", ex.Message); finally end; end; end;
method void Timer1_Elapsed( elsystem.Object sender, elsystem.TimerElapsedEventArgs args ) begin Try If p_Debug > 0 then print("Сохраняем: ", p_ExcelFile); If GExcel.Contains("Gelium_Treader_Excel_Save") = true then if GExcel.Items["Gelium_Treader_Excel_Save"] astype int = 1 then begin WB.Save(); GExcel.Items["Gelium_Treader_Excel_Save"] = 0; end; catch (exception ex) print("Ошибка сохранения файла Excel: ", ex.Message); ExcelOpen(); finally end; end;
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) begin ExcelOpen(); end;
If false then Plot1(0);

Для души и разума.

Перлы футбольных комментаторов:

- 6:0! Это уже больше, чем «какая боль...»
- Хули Лопес бьёт по воротам! Хули — это его имя.
- У Варламова на майке 3-й номер, а на трусах 9-й... С чем это связано, не могу объяснить, но вряд ли с размером.
- Это — Куман. Вы, наверно, узнаете его кучерявые ноги.
- Футболистам, у которых нет потомства, не рекомендуется вставать в стенку, когда штрафные бьет Роберто Карлос.

Далее...

- Пас-то хороший, да поле кончилось!
- Ну, знаете, за это надо бить табло! Извините, лицо.
- Я уверен, что все мужское население прильнуло к экранам своих телевизоров не от хорошей жизни, а в болельщицком экстазе.
- Под мышкой, как мыло в ванной, скользнула шайба.
- Из-за pадости, что забил гол такомy сильномy и гpозномy сопеpникy, Баджо повесился на воpотах.
- Опережаем немок на полтора километра. Это даже не трамвайная остановка, а расстояние от речного вокзала до бог знает куда. (биатлон)
- И мяч, преодолев последнее препятствие между ногами вратаря, влетает в ворота.
- Давыденко сразу взял подачу соперника. Он решил не тянуть резину в долгий ящик.
- Аpбитp достал из штанов yдаление.
- Игpоки стоят в стенке, деpжатся известно за что.
- Оборона сыпется как штукатурка.
- Во втором тайме им светило только в глаза.
- Сборная России попала в жидкую черную полосу неудач.
- Я тут стучу по голове, по монитору, по книгам. Что тут вокруг еще деревянное, боже мой!
- Боковой аpбитp пpинимает кpасивые позы. Возможно, он pаньше занимался балетом.
- Надеемся, что с Недведом все будет нормально, хотя несут его ногами вперед.
- Динамовцы сегодня выступают без привычных голубых трусов.
- Как скотчем залепили свои ворота сатурновцы.
- Ай-яй-яй-яй-яй! Вы со мной согласны?
- Ну куда ты отдаешь пас! Я же тебе кричу, что он вне игры!
- Фигурное катание — это же искусство, это даже не футбол!
- Защита хромала на обе ноги, практически не вставая с колен.
- Аргентина разрывает Сербию даже не как Тузик грелку, он ее рвет суетясь, а как домохозяйка рвет старую майку на мелкие домашние тряпочки. Спокойно, методично, успевая при этом проследить, чтобы на сковороде еще ничего не подгорело.
- Вот он держит соперника за трусы, за футболку, за бока... практически за все, что можно, держит. К мячy одновpеменно потянyлись pyки голкипеpа и лысина Фабpицио.
- Судьба играет с человеком, а человек играет в футбол.
- Вместо того чтобы в футбол играть, шли бы бутылки сдавать!
- Футболистам легко бегать по полю, а ты попробуй разумно прокомментировать их действия.


 

Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Gelium.net | 2000-2019 | © All rights reserved.