循环问题出在哪里呢。请教高手

txd_2008 2007-12-18 10:03:34
for i:=1 to 9 do
begin
s:=pchar(label3.Caption);
if opencom(1,9600)=1 then
begin
if (senddata(s,length(label3.Caption))=0) then
begin
Memo1.Text:=label3.Caption+' '+'写卡失败';
APPLICATION.ProcessMessages;
sleep(1500);
closecom();

end ;

if (senddata(s,length(label3.Caption))=1) then
begin
Memo1.Text:=label3.Caption+' '+'写卡成功';
label3.caption:=inttostr(strtoint(label3.caption)+1);
APPLICATION.ProcessMessages;
sleep(1500);
closecom();
end;


end;
end;

在第一次循环中第二个if里的条件要满足2次,里面的语句才能执行。问题出在哪里呢???
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
等待牛人来答.
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
接分先!
janthan 2008-01-22
  • 打赏
  • 举报
回复
“条件要满足2次”?这个提问很晦涩啊,不甚明白。
这段程序的结构似乎有问题啊:
if opencom(1,9600)=1 then
begin
if (senddata(s,length(label3.Caption))=0) then
begin
...
closecom();
end ;

if (senddata(s,length(label3.Caption))=1) then
begin
...
closecom();
end;
end;
opencom之后是两个if语句顺序执行,每个if语句的判断条件都要执行一次senddata操作。
1.若第一次senddata返回值为0,会执行closecom操作,这时端口已经被关闭了,
那么下一个if语句的senddata操作应该会报错吧?
2.若第一次senddata返回值为1,第一个if语句的内容不会被执行,即没有closecom操作,
接下来执行下一个if语句的senddata操作,正常情况返回值应该也会是1,这时才执行closecom操作。

或许你的问题描述的是第二种情况?

一般你的这个程序应该这样写吧:
if opencom(1,9600) then
begin
bRet := senddata(s,length(label3.Caption));
if (bRet=0) then
begin
...
end
else if (bRet=1) then
begin
...
end;
end;

txd_2008 2007-12-18
  • 打赏
  • 举报
回复
在第一次循环中第3个if(senddata(s,length(label3.Caption))=1) 里的条件要满足2次,里面的语句才能执行。问题出在哪里呢???

不好意思写错了
brightyang 2007-12-18
  • 打赏
  • 举报
回复
if (senddata(s,length(label3.Caption))=0) then
begin
Memo1.Text:=label3.Caption+' '+'写卡失败';
APPLICATION.ProcessMessages;
sleep(1500);
closecom();

end ;

什么叫第二个 if里的条件要满足2次才执行,没看懂
txd_2008 2007-12-18
  • 打赏
  • 举报
回复
up 是什么意思啊。
brightyang 2007-12-18
  • 打赏
  • 举报
回复
up

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧