var a,b,c,d,e,f:string;begin
a:=edit1.text;
b:=edit2.text;
c:=edit3.text;
d:=edit4.text;
e:=edit5.text;
f:=edit6.text;if (a='')or(b='')or(c='')or (d='')or (e='')or (f='') then showmessage('信息不完整')  //如果a,b,c,d,e,f有一个为空,则显示提醒elsetable1.Open;//数据表table打开
table1.Insert;//数据表处于插入状态
edit1.SetFocus;
tablename.value:=edit1.text;  将edit1下的内容添加到数据表name单元下
tablepassword.Value:=edit2.Text;
tablepop3.Value:=edit3.Text;
tablepop3port.Value:=edit4.Text;
talbesmtp.Value:=edit5.Text;
tablesmtpport.Value:=edit6.Text;
tableEmail.Value:=edit7.Text;
end;
现在用上面的代码,可以执行过去,也可以实现显示“信息不完整”提醒窗口,但是
if (a='')or(b='')or(c='')or (d='')or (e='')or (f='') then showmessage('信息不完整') else
这句代码的意思是:如果a,b,c,d,e,f有一个为空,则显示提醒,它的else的意思就可以理解为如果a,b,c,d,e,f中有一个有内容不为空,就执行else下面的代码!我现在想让它作出判断后,判断出有一个内容为话的显示提醒信息后就不再往下执行了,如果a,b,c,d,e,f所有的内容都不为空的话,则执行else下的内容,这段代码应怎么写呢?而且
var a,b,c,d,e,f:string;
begin
a:=edit1.text;
b:=edit2.text;
c:=edit3.text;
d:=edit4.text;
e:=edit5.text;
f:=edit6.text;
if (a='')or(b='')or(c='')or (d='')or (e='')or (f='') then showmessage('信息不完整')
这段代码可不可以用for...do...之类的循环语句+条件语句来表达啊,这样子写的话,代码太多了,太麻烦了!谢谢各位大哥大姐!

解决方案 »

  1.   


    {相关函数}
    function lookedit:Boolean;
    var
    i:integer;
    begin
     Result:=true;
     for i :=1  to 6 do
      if Tedit(FindComponent('edit'+inttostr(i))).text='' then begin
        Result:=false;
        BREAK;
      end;
    end;{--使用--}
    if lookedit then 
    showmessage('信息不完整') 
    else 
     {---------------------你的操作}
    end; 
      

  2.   

    修正一下,上面操错了:{--使用--}
    if not lookedit then 
    showmessage('信息不完整') 
    else 
     {---------------------你的操作}
    end; 
      

  3.   

    请楼上的解释下一楼的代码,看不懂。
    for i :=1  to 6 do
      if Tedit(FindComponent('edit'+inttostr(i))).text='' then begin
        Result:=false;
        BREAK;
      end;
    谢谢!
      

  4.   

    编程的问题,都是条条大路通罗马,最好是清晰简练,我发表一下自己的看法第一个问题:
    如果不想改变习惯顺序:
    if not (a<>'')and(b<>'')...
    then 提示
    else 执行;
    如果看不惯not,可以写成:
    if (a<>'')and(b<>'')...
    then 执行
    else 提示;第二个问题:
    如果想要循环,首先你的abcdef要放到数组中,就是定义一个字符串数组来代替abcdef:
    判断的循环:
    var
    i:integer;
    flag:boolean;
    str:array[1..6] of string;
      begin
      ……
      flag:=true;
      for i:=1 to 6 do
         begin
           if str[i]=''
             then flag:=false;
         end;
    完了之后用flag的值来判断执行条件  
      ……
      end;
    赋值的循环:
    要用到一个叫组件查询函数的东西:findcomponent.
    var
    i:integer;
    str:array[1..6] of string;
      begin
      for i:=1 to 6 do
         begin
           str[i]:=tedit(findcomponent('edit'+inttostr(i))).text;
         end;
      end;这些问题,除了findcomponent不好查之外,其他的都是自己应该能想到的,我想如果不是你太懒,就是你的语言基础太差,需要补基础知识才行。
    我也是才开始学,欢迎各位老鸟批评指正。
      

  5.   

    一边上班一边写的回贴,所以搞得比较慢,要是早看到IT民工的回贴,我就不回了,IT民工阐述问题比我精简得多,楼主你看他的吧。
      

  6.   

    if (a='')or(b='')or(c='')or (d='')or (e='')or (f='') then 
    begin
    showmessage('信息不完整') ;
    exit;
    end
    else 
    begin
    //---------------------你的操作
    end//这样不是就可以了
      

  7.   

    现在用上面的代码,可以执行过去,也可以实现显示“信息不完整”提醒窗口,但是 
    if (a='')or(b='')or(c='')or (d='')or (e='')or (f='') then showmessage('信息不完整') else 
    这句代码的意思是:如果a,b,c,d,e,f有一个为空,则显示提醒,它的else的意思就可以理解为如果a,b,c,d,e,f中有一个有内容不为空,就执行else下面的代码! 楼主,你这个说法好象不对哦,他的else就是 not((a='')or(b='')or(c=''))等价于(a<>'')and(b<>'')and(c<>'')离散数学或者数据结构中应该做过类似的题目的,翻译成文字就是没有任何一个变量的值为'',符合你的需求,你真的需要补一补基础知识才行。