我在SeverSocket.ServerSocket1ClientRead事件里用
如下代码,多次调用SentText,但
ClientSocket.ClientSocket1Read事件被激发的次数总少于
SeverSocket.serverSocket1ClientRead里调用SentText的次数。在SeverSocket.ServerSocket1ClientRead里......
if ADOQuery5.RecordCount>0 then
begin ADOQuery5.First;
for i:=0 to ADOQuery5.RecordCount-1 do
begin
sfzl:=trim(ADOQuery5.FieldbyName('bah').asstring)+'#bah'
+trim(ADOQuery5.FieldbyName('xm').asstring)+'#xm'
+trim(ADOQuery5.FieldbyName('zlt').asstring)+'#zlt'
+trim(ADOQuery5.FieldbyName('ks').asstring)+'#ks'
+trim(ADOQuery5.FieldbyName('ys').asstring)+'#ys'
+trim(ADOQuery5.FieldbyName('times').asstring)+'#times';
ServerSocket1.Socket.connections[m].SendText(sfzl);
if ADOQuery5.Eof=false then
ADOQuery5.Next;
end;
end;
如下代码,多次调用SentText,但
ClientSocket.ClientSocket1Read事件被激发的次数总少于
SeverSocket.serverSocket1ClientRead里调用SentText的次数。在SeverSocket.ServerSocket1ClientRead里......
if ADOQuery5.RecordCount>0 then
begin ADOQuery5.First;
for i:=0 to ADOQuery5.RecordCount-1 do
begin
sfzl:=trim(ADOQuery5.FieldbyName('bah').asstring)+'#bah'
+trim(ADOQuery5.FieldbyName('xm').asstring)+'#xm'
+trim(ADOQuery5.FieldbyName('zlt').asstring)+'#zlt'
+trim(ADOQuery5.FieldbyName('ks').asstring)+'#ks'
+trim(ADOQuery5.FieldbyName('ys').asstring)+'#ys'
+trim(ADOQuery5.FieldbyName('times').asstring)+'#times';
ServerSocket1.Socket.connections[m].SendText(sfzl);
if ADOQuery5.Eof=false then
ADOQuery5.Next;
end;
end;
解决方案 »
- 设计erp时,关于月结算的思路
- 用什么办法判断一个驱动器是否准备好?为什么提示没有磁盘?
- 关于集合的问题,在FORMAT中的第二个参数是一个无所不包的集合,如果我要用程序生成该集合,应该定义一个什么样的变量呢?
- 请问用DELPHI如何读出BMP图片的信息?如何将BMP图片转化成TGA格式的图
- mysql不支持回滚怎么办
- TShellListView跟节点为桌面时怎么去掉回收站和IE图标?
- 如何调用DLL文件里的函数?
- 有谁用过1st3000里面的fctreecombobox控件?如何让他和treeview同步(普通的)呢?
- 告急:如何利用TListview自定义...Draw事件设置ListView中的某个SubItem具有不同与ListView的Font?
- TNMPOP3的一个错误
- 在打印报表时,上面加的QRMemory,能否规定它一行打多少字或这一行多长??
- websnap小问题,在线等,解决立即给分
Socket: TCustomWinSocket);
var
TempS,SFZL,bah,xm,zlt,SQLString,tjt,sffk,KS,YS,times:string;
Line,i,t:integer;
begin
sfzl:=ClientSocket1.Socket.ReceiveText;//收数据
Line:=StringGrid1.RowCount-1; //将Sfzl分解插入StringGrid里
StringGrid1.Cells[0,Line]:=' '+intTostr(Line);
i:=Pos('#bah',SFZL);
bah:=LeftStr(SFZL,i-1);
StringGrid1.Cells[1,Line]:=bah;
t:=i;
i:=Pos('#xm',SFZL);
xm:=copy(SFZL,t+4,i-(t+4));
StringGrid1.Cells[2,Line]:=xm;
t:=i;
i:=Pos('#zlt',SFZl);
zlt:=copy(SFZL,t+3,i-(t+3));
t:=i;
i:=Pos('#ks',SFZL);
KS:=trim(copy(sfzl,t+4,i-(t+4)));
t:=i;
i:=Pos('#ys',SFZL);
YS:=trim(copy(sfzl,t+3,i-(t+3)));
t:=i;
i:=pos('#times',sfzl);
times:=trim(copy(sfzl,t+3,i-(t+3)));
tjt:='';
sffk:='';
sfzl:='';
stringGrid1.Cells[3,Line]:=times;
StringGrid1.Cells[4,Line]:=zlt;
StringGrid1.Cells[5,Line]:=ys;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;
ServerSocket1.Socket.connections[m].SendText(sfzl);
后加上while t<5000 do
t:=t+1
也不行,但是在
ServerSocket1.Socket.connections[m].SendText(sfzl);
后面加上showmessage(sfzl),就可以为什么
注意包的长度不要超过40962, Client 根据接收记录数,循环取数,完成后反馈回制定标记的数据给Server端3, Server 收到Client反馈包,重复1,完成余下的数据发送。 GOOD LUCK
QQ就是一个很明显的例子。----------------------
想女友...........