function TMain.ProcessAck: boolean; begin Result:=false; if not IPClient.IPClient.Connected then exit; while AckQueue.Pop do begin if AckQueue.Item.ResultStr='' then begin if not IPClient.SendOK(AckQueue.Item.TaskID,AckQueue.Item.IMSI) then begin AckQueue.Push; break; end; end; end; end;function AckQueue.Push: boolean; begin Result:=false; if i=0 then exit;
Result:=true; end;ProcessAck 会返回true么?
没有付给result,那就不是返回值 begin result:=false if i=0 then//如果这里跳出了 则返回值为false exit; getresult();//执行到这,返回值还是false,但是会执行getresult这个函数而已 en;
你这段函数,返回值始终是false,整个函数中根本没有赋值嘛
恩 谢谢了 我就是看不明白什么意思 因为还有个 while ProcessAck do; 给我弄晕了我不知道这是干什么的 把delphi改成c#的给我弄的晕头转向的 现在脑子乱七八糟的
while AckQueue.Pop do 就是说每次循环时执行AckQueue.Pop,若返回值为true则继续循环,不然就跳出循环。单独执行AckQueue.Push 就是只是执行这个函数的功能,而不管他的返回值是什么。
正确,返回就是false
是这种问题,自己调试一下,或看一下帮助就ok了,不要浪费分了
2.从哪跳出的,跳出前的result就是你函数的返回值,举例子说吧
begin
result:=false
if i=0 then//如果这里跳出了 则返回值为false
exit;
result:=getresult();//getresult为另一个函数 执行到的话 返回值就是getresult的返回值
en;这种问题,还是自己调试一下或看看帮助吧,不要浪费分啊
比如说开始的时候Result:=false,然后执行到某个地方Result:=true了,然后exit了,那么返回值就是True
开始Result就赋值为false是为了使代码简洁,要不然后面就要if....then result:=true else result:=false 这样子
貌似CSDN出问题了4秒前的没显示出来!
function TMain.ProcessAck: boolean;
begin
Result:=false;
if not IPClient.IPClient.Connected then exit;
while AckQueue.Pop do begin
if AckQueue.Item.ResultStr='' then begin
if not IPClient.SendOK(AckQueue.Item.TaskID,AckQueue.Item.IMSI) then begin
AckQueue.Push;
break;
end;
end;
end;
end;function AckQueue.Push: boolean;
begin
Result:=false;
if i=0 then exit;
Result:=true;
end;ProcessAck 会返回true么?
begin
result:=false
if i=0 then//如果这里跳出了 则返回值为false
exit;
getresult();//执行到这,返回值还是false,但是会执行getresult这个函数而已
en;
把delphi改成c#的给我弄的晕头转向的 现在脑子乱七八糟的
while AckQueue.Pop do 就是说每次循环时执行AckQueue.Pop,若返回值为true则继续循环,不然就跳出循环。单独执行AckQueue.Push 就是只是执行这个函数的功能,而不管他的返回值是什么。