procedure TForm1.Button1Click(Sender: TObject);
Var
  Stext,Scopy:string;
begin
  Stext:=Edit1.Text+':';
  Label1.Caption:='0';//初始化三个默认值
  Label2.Caption:='0';
  Label3.Caption:='0';
  ShowMessage(Stext+#13#10+'初始化三个填充框'+#13#10+'STest长度:'+inttostr(length(Stext)));
  while length(stext)>0 do
  //ShowMessage('开始');
    Scopy:= copy(Stext,1,Pos(':',Stext)-1);
    case StrToInt(sCopy) of
      0..39:label1.Caption:=intTostr(strToint(label1.Caption)+1);
      40..69:label2.Caption:=intTostr(strToint(label2.Caption)+1);
      70..100:label3.Caption:=intTostr(strToint(label3.Caption)+1);
    end;
  Delete(sText,1,pos(':',sText));
end;
这是什么问题呀,一运行就死循环!

解决方案 »

  1.   

      while length(stext)>0 do
      //ShowMessage('开始');
        Scopy:= copy(Stext,1,Pos(':',Stext)-1);
    这段一直在循环,当然死循环。没仔细看,不知道你要做什么,但是看你的缩进,这里至少要加上begin..end吧。
      while length(stext)>0 do
      begin
      //ShowMessage('开始');
        Scopy:= copy(Stext,1,Pos(':',Stext)-1);
        case StrToInt(sCopy) of
          0..39:label1.Caption:=intTostr(strToint(label1.Caption)+1);
          40..69:label2.Caption:=intTostr(strToint(label2.Caption)+1);
          70..100:label3.Caption:=intTostr(strToint(label3.Caption)+1);
        end;
      end;
      

  2.   

    WHILE 结构上没有BEGIN END;很小的疏忽啊。。你再写循环的时候建议先加上BEGIN END再在里面写语句。养成好习惯就不会再出这样的问题了。
      

  3.   

    while length(stext)>0 do
    这个条件永远满足
      

  4.   

    while length(stext)>0 do
     begin
      //ShowMessage('开始');
        Scopy:= copy(Stext,1,Pos(':',Stext)-1);
        case StrToInt(sCopy) of
          0..39:label1.Caption:=intTostr(strToint(label1.Caption)+1);
          40..69:label2.Caption:=intTostr(strToint(label2.Caption)+1);
          70..100:label3.Caption:=intTostr(strToint(label3.Caption)+1);
        end;
      Delete(sText,1,pos(':',sText));
     end;
      

  5.   

    while length(stext)>0 do
    这个条件是永远成立的,所以是死循环。
      

  6.   

    while length(stext)>0 do
    死循环。
      

  7.   

      
    while length(stext)>0 do
      //ShowMessage('开始');
        Scopy:= copy(Stext,1,Pos(':',Stext)-1);
        case StrToInt(sCopy) of
          0..39:label1.Caption:=intTostr(strToint(label1.Caption)+1);
          40..69:label2.Caption:=intTostr(strToint(label2.Caption)+1);
          70..100:label3.Caption:=intTostr(strToint(label3.Caption)+1);
        end;
      =》
      if length(stext)>0 then
      begin
        Scopy:= copy(Stext,1,Pos(':',Stext)-1);
        case StrToInt(sCopy) of
          0..39:label1.Caption:=intTostr(strToint(label1.Caption)+1);
          40..69:label2.Caption:=intTostr(strToint(label2.Caption)+1);
          70..100:label3.Caption:=intTostr(strToint(label3.Caption)+1);
        end;
      end;