Нужна помощь профессионального программиста - страница 18

 
prostotrader #:

Вы начали писать?

У меня не создается новое соединение P2TCP c ошибкой CG_ERR_UNSUPPORTED

Я на Plazer пока тренируюсь. Подключается нормуль к срочнику, Но, есть какая-то ошибка, а может не ошибка. Пока не разобрался.

Ваша прога, ошибок не дает, но ничего не выводит - пусто/пусто.

 
Dmitriy Skub #:

Я на Plazer пока тренируюсь. Подключается нормуль к срочнику, Но, есть какая-то ошибка, а может не ошибка. Пока не разобрался.

Ваша прога, ошибок не дает, но ничего не выводит - пусто/пусто.

Можете прислать строку с аргументами, которые Вы используете в комаyде cg_conn_new() ?



Несколько лет назад не было никаких проблем.

В Plazer есть ошибка, я говорил с разработчиком.

 
prostotrader #:

Можете прислать строку с аргументами, которые Вы используете в комаyде cg_conn_new() ?



Несколько лет назад не было никаких проблем.

В Plazer есть ошибка, я говорил с разработчиком.

До такого еще не дошел. Вот из примера того на С:

В том примере такие параметры:

config.main.name = "ekapp";

config.main.mode = Mode::Realtime;

config.main.startId = 1000000;

config.plaza.type = "p2lrpcq";

config.plaza.host = "127.0.0.1";

config.plaza.port = "4001";

config.plaza.subs = "mq,replclient";

config.plaza.ini = "/home/user/expack/ini/ekapp.ini";

config.plaza.key = "11111111";

config.plaza.broker = "FZ00";

config.plaza.client = "J00";


 

Я думаю, что дело в моем не правильном переводе с C++ на Паскаль

В CGate.h , есть следующие объявления

typedef struct cg_conn_t cg_conn_t;
typedef struct cg_listener_t cg_listener_t;
typedef struct cg_publisher_t cg_publisher_t;
typedef struct cg_scheme_t cg_scheme_t;
typedef struct cg_logger_t cg_logger_t;

Т.е пустые структуры, которые я перевел так

  pcg_conn_t = ^cg_conn_t;
  cg_conn_t = record
    // Empty
  end;
//--- Listener ---
  pcg_listener_t = ^cg_listener_t;
  cg_listener_t = record
    // Empty
  end;
 //--- Publisher ---
  pcg_publisher_t = ^cg_publisher_t;
  cg_publisher_t = record
    // Empty
  end;
//--- Scheme ---
  pcg_scheme_t = ^cg_scheme_t;
  cg_scheme_t = record
    // Empty
  end;
//--- Logger ---
  pcg_logger_t = ^cg_logger_t;
  cg_logger_t = record
    // Empty
  end;

pcg_conn_t - это указатель на cg_conn_t

Н-р функция cd_conn_new объявлена так

CG_EXPORT CG_RESULT CG_API cg_conn_new(const char* settings, cg_conn_t** connptr);

Где параметр

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. Почему?

 
Dmitriy Skub #:
Вообще, в примере там строка "p2sys://127.0.0.1:4001;app_name=test_p2sys", у Вас p2tcp. Почему?

p2sys - это специальное соединение для управления роутером

Я нашел ошибку, соединение создается, но теперь не открывается :(

Ошибка была "app name=", а нужно "app_name="

Причем, после создания соединения, я проверяю его состояние (cg_conn_getstate)

и все нормально, нет ошибки

 
prostotrader #:

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 как раз для посылки команды используется. У Вас так?


 
Dmitriy Skub #:

В примере для посылки заявки там три объекта создается:

            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, 

Причина обращения: