Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я думаю, что дело в моем не правильном переводе с C++ на Паскаль
В CGate.h , есть следующие объявления
Т.е пустые структуры, которые я перевел так
pcg_conn_t - это указатель на cg_conn_t
Н-р функция cd_conn_new объявлена так
Где параметр
cg_conn_t ** connptr
я истолковал так одна звездочка - говорит о том, что это переменная принимает данные,
а вторая звездочка говори т о том, что это указатель, поэтому в Паскале я записал так
cg_conn_new_t = function(settings: PAnsiChar; var connptr: pcg_conn_t): CG_RESULT; stdcall;Скорее всего где-то не правильно транслировал :(
Добавлено
Но так как connptr - это все же объект (), то попробовал объявить cd_conn_t, так
pсg_conn_t = ^THandle; - указатель на объект Handle - не помогло
Одна звездочка это указатель (т.е. адрес) на объект, а две звездочки это указатель на указатель.
Интерпретируется они (две звездочки) в зависимости от контекста, т.е. компилятор ничего не знает о типе. Например, это может быть массив массивов.
Широко известный пример - ф-ия точки входа в программу: main(int argc, char** argv), где arg -число аргументов командной строки, а argv- массив строк параметров в командной строке (каждая строка передается по указателю).Вообще, в примере там строка "p2sys://127.0.0.1:4001;app_name=test_p2sys", у Вас p2tcp. Почему?
p2sys - это специальное соединение для управления роутером
Я нашел ошибку, соединение создается, но теперь не открывается :(
Ошибка была "app name=", а нужно "app_name="
Причем, после создания соединения, я проверяю его состояние (cg_conn_getstate)
и все нормально, нет ошибки
p2sys - это специальное соединение для управления роутером
Я нашел ошибку, соединение создается, но теперь не открывается :(
Ошибка была "app name=", а нужно "app_name="
Причем, после создания соединения, я проверяю его состояние (cg_conn_getstate)
и все нормально, нет ошибки
В примере для посылки заявки там три объекта создается:
Connection conn = new Connection("p2tcp://127.0.0.1:4001;app_name=ntest_send");
Publisher publisher = new Publisher(conn, "p2mq://FORTS_SRV;category=FORTS_MSG;name=srvlink;timeout=5000;scheme=|FILE|forts_messages.ini|message");
Listener listener = new Listener(conn, "p2mqreply://;ref=srvlink");
publisher как раз для посылки команды используется. У Вас так?
В примере для посылки заявки там три объекта создается:
Connection conn = new Connection("p2tcp://127.0.0.1:4001;app_name=ntest_send");
Publisher publisher = new Publisher(conn, "p2mq://FORTS_SRV;category=FORTS_MSG;name=srvlink;timeout=5000;scheme=|FILE|forts_messages.ini|message");
Listener listener = new Listener(conn, "p2mqreply://;ref=srvlink");
publisher как раз для посылки команды используется. У Вас так?
Прежде, чем создать publisher нужно открыть соединение
new Publisher(conn,
Из описания API и из примеров, не понятно для каждого потока используется свой лисенер или один?
В общем, Дмитрий, я разобрался.
1. Для получения потоков репликации нужно создавать соединение, а в этом соединении
создавать столько лисенеров, сколько Вы будите слушать потоков.
Но колбэк может быть один, чтобы различать потоки, при создании лисенера в Data мы можем записывать сой идентификатор
Который мы получим в колбэеке
(даже можно создать структуру, по которой будут обрабатываться данные из сообщения)
2. Для отправки сообщений, нужно создать другое соединение, в котором должен быть как паблишер, так и лисенер.
Я решил, что для каждого робота будет создаваться свое соединение с паблишером и лисенером.
Вот как-то так
Ок, спасибо за инфу!
В шарпе то там поудобней сделано, в самом языке. Там через, так называемые, делегаты. Без прямых колбэков.