如题,这是一个Delphi控制台程序program Project1;{$APPTYPE CONSOLE}uses
SysUtils,
zmqmm in '..\pub_sub\sub_client\zmqmm.pas';var
context:pointer;
frontend:pointer;
backend:pointer;
zmq_poll:smallint=1;
items:array[0..1] of zmq_pollitem_t;
item:zmq_pollitem_tp;
msg:zmq_msg_t;
msgp:zmq_msg_tp;begin
msgp:=@msg;
context:=zmq_init(1);
frontend:=zmq_socket(context,6);
backend:=zmq_socket(context,5);
zmq_bind(frontend,'tcp://*:1038');
zmq_bind(backend,'tcp//*:1039');
items[0].socket:=frontend;
items[0].fd:=0;
items[0].events:=1;
items[0].revents:=0;
items[1].socket:=backend;
items[1].fd:=0;
items[1].events:=1;
items[1].revents:=0; item:=@items[0]; while True do
begin
zmq_poll(items,2,-1);
if (items[0].revents<>0) then
begin
while True do
begin
zmq_msg_init(msgp);
zmq_recv(frontend,msgp,0);
zmq_send(backend,msgp,0);
zmq_msg_close(msgp);
end;
end;
if (items[1].revents<>0) then
begin
while True do
begin
zmq_msg_init(msgp);
zmq_recv(backend,msgp,0);
zmq_send(frontend,msgp,0);
zmq_msg_close(msgp);
end;
end;
zmq_close(frontend);
zmq_close(backend);
zmq_term(context);
end;end.报错是:[Pascal Error] Project1.dpr(40): E2066 Missing operator or semicolon但是39行是:zmq_poll(items,2,-1);它没有缺操作符,也不差分号啊
SysUtils,
zmqmm in '..\pub_sub\sub_client\zmqmm.pas';var
context:pointer;
frontend:pointer;
backend:pointer;
zmq_poll:smallint=1;
items:array[0..1] of zmq_pollitem_t;
item:zmq_pollitem_tp;
msg:zmq_msg_t;
msgp:zmq_msg_tp;begin
msgp:=@msg;
context:=zmq_init(1);
frontend:=zmq_socket(context,6);
backend:=zmq_socket(context,5);
zmq_bind(frontend,'tcp://*:1038');
zmq_bind(backend,'tcp//*:1039');
items[0].socket:=frontend;
items[0].fd:=0;
items[0].events:=1;
items[0].revents:=0;
items[1].socket:=backend;
items[1].fd:=0;
items[1].events:=1;
items[1].revents:=0; item:=@items[0]; while True do
begin
zmq_poll(items,2,-1);
if (items[0].revents<>0) then
begin
while True do
begin
zmq_msg_init(msgp);
zmq_recv(frontend,msgp,0);
zmq_send(backend,msgp,0);
zmq_msg_close(msgp);
end;
end;
if (items[1].revents<>0) then
begin
while True do
begin
zmq_msg_init(msgp);
zmq_recv(backend,msgp,0);
zmq_send(frontend,msgp,0);
zmq_msg_close(msgp);
end;
end;
zmq_close(frontend);
zmq_close(backend);
zmq_term(context);
end;end.报错是:[Pascal Error] Project1.dpr(40): E2066 Missing operator or semicolon但是39行是:zmq_poll(items,2,-1);它没有缺操作符,也不差分号啊
解决方案 »
- 请问cxgrid怎么凸显多个筛选列表头,像excel一样,筛选一列,这列表头有个标记,多列同时筛选则多列都有一个标记
- JR们都进来,帮帮我 嘿嘿~~
- 100分求一个拷贝文件(复制文件)的算法
- 请问如何可以改变 ComboBox 控件 左侧 下拉按钮的宽度??以及下拉菜单 List 中垂直滚动条的宽度?
- Delphi 8里连接ACCESS数据库的问题
- 欧洲杯 A组 葡萄牙VS西班牙,猜中200分!!
- 关于CHART画图的问题??????
- 怎样把有密码的ACCESS数据库用DELPHI做一些简单操作?(在线等待,马上结帖)
- query控件的requrstlive属性为true时的问题,
- 谁能说Tdatabase中AliasName和DatabaseName的区别,以及具体的使用方法!谢谢!
- 从本贴发布之时起,账号lihuasoft已转让给旺旺用户adong***
- 对Array Of PChar赋值的问题
ZMQ_EXPORT int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);
typedef struct
{
void *socket;
#if defined _WIN32
SOCKET fd;
#else
int fd;
#endif
short events;
short revents;
} zmq_pollitem_t;我在Delphi封装是这样的:
function zmq_poll(items:zmq_pollitem_tp;nitems:Integer;timeout:longint):Integer;cdecl;
function zmq_poll;external'libzmq.dll'name'zmq_poll';
zmq_pollitem_tp封装是这样的:
type
zmq_pollitem_t=packed record
socket:Pointer;
fd:cardinal;
events:smallint;
revents:smallint;
end;
zmq_pollitem_tp=^zmq_pollitem_t;