Страницы

28 мая 2012 г.

pgScript. Генераторы случайных последовательностей. Числовые данные

Здравствуйте. Добро пожаловать в мой скромный блог.

       Сегодня я опишу генераторы случайных последовательностей числовых значений, которые используются в pgScript.

Целочисленные последовательности.

Следующая строка присвоит переменной "@Rec" значение генератора:

set @Rec = INTEGER ( Min, Max, [Sequence], [Seed] );
где,
Min - Минимальная граница генерации чисел.
Max - Максимальная граница генерации.
Sequence - Не обязательный параметр назначающий последовательность генерации чисел. (реакция генератора различна только на нулевое и ненулевое значение данного параметра).
Seed - Не обязательный параметр обозначающий индекс числа в последовательности. Т.е. если данный параметр установлен, то генератор будет возвращать не произвольное число, а число с указанным в данном параметре индексом, не зависимо от количества обращений.

21 мая 2012 г.

Написание callback-функций в C++ и COM

       Это быстрое описание того, как адаптировать Ваши указатели функции C-стиля, если Вы кодируете на C++. Эта статья написана для того, чтобы предоставить быстрое описание людям, пытающимся выяснять, как работают функции обратного вызова на всевозможных языках. Щелкните здесь для C#/.NET версии. Или щелкните здесь, если Вы хотите сделать делегат C#-стиля функций обратного вызова в C++.

       Проблема написания программы на C++ состоит в том, что работа с указателями функции реализована более сложно. В C все Ваши функции глобальны, и определить адрес функции можно в любой точке кода где это понадобится. Однако, в C ++ Ваши функции (если они не объявлены как статичные) связаны с объектами, и Вы должны оперировать объектом наряду со своим указателем функции.

17 мая 2012 г.

Delphi 2007. Сохранение библиотеки типов COM-сервера. Ошибка "Unable to rename 'my_TLB.tlb' to ' '"

Доброго времени суток.
       Внезапно понадобилось разработать свой маленький COM-сервер на Pascal-е  для реализации взаимодействия между приложениями. Воспроизводя все действия согласно мануалу я наткнулся на проблему не позволяющую мне сохранить проект. При открытой библиотеке типов IDE постоянно генерировало исключение "Unable to rename 'my_TLB.tlb' to '.'".
       Покопавшись по форумам я высянил,что такая проблема преследует только тех кто использует Delphi 2007 в совокупности с твикером. Твикер представляет собой исполняемый файл: "D2007Tweaks.exe". В инструкции к этой программе написано, что необходимо поставить галочки напротив пунктов 'Don't create local files', 'Don't create ~bpl files', 'Don't create history files', что я и сделал при установке Delphi.
       Как выяснилось именно эта настройка препятствует сохранению библиотеки типов COM - сервера. Если Снять вышеуказанные галочки, проект сохраниться нормально.

11 апреля 2012 г.

C++. Компилятор "VS 2005/2008". Ошибка LNK2019

Добрый день.

       Класс описанный в предыдущем посте я изначально писал с использованием IDE Code::Blocks 10.5 , Компилятор gcc. После этого функционал был отлажен, я перенес его в библиотеку которая компилится VC 2005/2008 на базе все того же Code::Blocks.
Попытался сделать билд и приплыл... Повалились ошибки:

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegQueryValueExA@24 referenced in function "private: void __thiscall 
 win_reg::Registry::SysGetValue(char const *,unsigned char *,unsigned long *)" (?SysGetValue@Registry@win_reg@@AAEXPBDPAEPAK@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegSetValueExA@24 referenced in function "private: void __thiscall win_reg::Registry::SysSetValue(char const *,unsigned long,unsigned char const *,unsigned long)" (?SysSetValue@Registry@win_reg@@AAEXPBDKPBEK@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegOpenKeyExA@20 referenced in function "public: void __thiscall win_reg::Registry::OpenKey(struct HKEY__ * *,char const *,bool)" (?OpenKey@Registry@win_reg@@QAEXPAPAUHKEY__@@PBD_N@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegCreateKeyExA@36 referenced in function "public: void __thiscall win_reg::Registry::OpenKey(struct HKEY__ * *,char const *,bool)" (?OpenKey@Registry@win_reg@@QAEXPAPAUHKEY__@@PBD_N@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function "public: void __thiscall win_reg::Registry::CloseKey(struct HKEY__ *)" (?CloseKey@Registry@win_reg@@QAEXPAUHKEY__@@@Z)|

C++. Работа с реестром Windows. Создание собственного класса.

       Доброго времени суток. Рад видеть Вас в своем блоге.
       Сегодня хотелось бы обсудить работу с реестром Windows. Да, эта тема далеко не новая, информации по ней в интернете куча. НО, я решил подойти к вопросу как новичок. Новичок, т.к. с недавнего времени заинтересовался C++ и на данном этапе стараюсь впитать как можно больше полезной и качественной инфы, чтобы пользоваться возможностями этого языка наиболее оптимально. Соответственно, касаемо работы с реестром "голый" Windows API я никогда не использовал.
       Вернемся к реестру... Я буду рассматривать работу с реестром Windows средствами Windows API. Возможно есть и другие способы, но я их не рассматривал.
       Как человек, несколько лет просидевший на паскале, я конечно же не мог не написать свой класс который будет иметь менее обширный интерфейс нежели голый API интерфейс описанных ниже функций. Об этом позже...

7 апреля 2012 г.

Metastock - TAutoTraderDLL. Впечатления после небольшого периода работы

       Доброго времени суток.
       Вот более недели я периодически ковыряюсь в метастоке и библиотеке (TAutoTraderDLL) с внешними функциями для взаимодействия с Quik. За это время я реализовал пару стратегий предоставленных мне финансовым аналитиком на работе. Я не могу сказать, что разобрался до конца в этой системе, но сейчас работать куда проще чем в начале и вопросов с каждым разом становится все меньше. Чтобы разобраться со всеми возможностями метастока необходимо намного больше временных ресурсов. Хотя мне как программисту, задача которого - техническая реализация стратегий роботов, знать там все вовсе не обязательно. :)


5 апреля 2012 г.

Округление числа. Когда нету Round()...

       Доброго времени суток в блоге "Будни программиста".
       Сегодня что-то стало скучно решил что-нибудь почитать. Взял в руки учебник по математике. :) Читал раздел про обыкновенные дроби, и десятичные дроби с бесконечной периодичностью.
       Сразу же вспомнилась простая операция округления чисел в большую сторону. А именно, заинтересовал вопрос, есть ли какая-либо математическая формула для преобразования числа к необходимой точности? Единой формулы я, к сожалению, не нашел. Конечно я далеко не математик, но навскидку накидал алгоритм преобразования: