我头都快爆了!我就看不出哪里错了!!!!真气死了!(50分)

  • 主题发起人 主题发起人 wlyft
  • 开始时间 开始时间
W

wlyft

Unregistered / Unconfirmed
GUEST, unregistred user!
nmudp收到信息后,用本地和远程都用2644口!
readtempstr为收到的信息
wlystream := TMemoryStream.Create;
wly_id:string;
numdp.remotehost:='192.168.0.2';
NMUDP1.ReportLevel := Status_Basic;

if (pos('quneuser',readtempstr)>0) and (pos('quneuser',readtempstr)<2)then
begin
if not checkbox1.Checked then
begin
wly_username :=copy(readtempstr,9,pos('/',readtempstr)-9);
with query1 do
begin
数据库操作!耗时但绝对没错
end;
if query1.FieldByName('countemp').asinteger=0 then
begin
with query1 do
begin
数据库操作!耗时但绝对没错
end;
sendtempstr:='buneuser'+wly_id;//wly_id 有值!
try
// wsendstream.Clear;
wlystream.Write(sendTempStr[1], Length(sendtempstr));
NMUDP1.SendStream(wlystream);
就是边出错,而且用try也不能跳过,程式直接退出
出错为stream write error
在NMUDP1StreamInvalid有写程式也能不能跳过出错!!!
except
wlystream.Free;
end;
wlystream.Free;
end else
begin
sendtempstr:='quused';
try
wsendstream.Clear;
wsendstream.Write(sendTempStr[1], Length(sendtempstr));
NMUDP1.SendStream(wsendstream);
except
wsendstream.free;
end;
end;
end else
begin
sendtempstr:='qustop';
try
wsendstream.clear;
wsendStream.Write(sendTempStr[1], Length(sendtempstr));
NMUDP1.SendStream(wsendStream);
except
wsendstream.Free;
end;
end;
end;
 
我刚刚解决了一个用TNMUDP传送TRecord数据出错的问题
将TRecord下所有定义成string的,都改成string[n](如string[10]),
或者定义成WideString就可以了

你试试将wly_id定义成WideString看看
 
我试过wly_id 和sendtempstr设成widestring的两种情况都不行!
我把发送分离出来却可以,真的搞不懂!!!!
老兄帮帮忙啊!!!!!

 
wlystream.Write(sendTempStr[1], Length(sendtempstr));
wlystream.position := 0; //插入这句试试
NMUDP1.SendStream(wlystream);

我看你程序出错消息是操作Stream错误[^]
 
我没用谁的方法
我删掉两个NMUDP1.ReportLevel := Status_Basic;中的一个
就默名奇闻的好啦!
同时用两个上面那个东东是不是不可以!
 
多人接受答案了。
 
后退
顶部