var
       txttemp,txtresult,ascchr:string;
       txtst:Tstringlist;
         begin
             if  Binary.Checked then
              begin
                txtst.Delimiter:='%';
                txtst.DelimitedText:=copy(Original.Text,1,length(Original.Text)-1);
                for j:=0 to txtst.Count-1 do
                  begin
                    txttemp:=txtst.Strings[j];
                    showmessage(txttemp);
                  end;
              end;为什么会出现无限循环阿.
我明明只是循环txtst.count次阿.
为什么还会无限循环下去呢?
而且我用break;来跳出循环都实现不了....
很迷茫阿.
希望高手给我解答下阿
我用来测试的文本为:
11001110%11010010%1110111%1101111%110001%11000011%11000111%1101101%1100101%1101110%110010%10110110%10111100%1100100%
1101111%1110101%110011%11001010%11000111%1110011%1101000%1101001%110100%10111010%11000011%1101000%1100001%1101111%
110101%10111010%10100010%1101000%1100001%1101001%110110%11010111%11010011%1111010%1101001%110111%

解决方案 »

  1.   

    没错啊,程序里还有其他代码么?试过,没问题的。循环中尽量不要showmessage。
      

  2.   

    没看出来问题啊,
    txtst在那创建的?
      

  3.   

    uses
    Registry
    var
      freg:TRegistry;
      txttemp,txtresult:string;
      txtst:Tstringlist;
      chvalue:array[1..4] of string;
    begin
        freg:=TRegistry.Create;
        freg.RootKey:=HKEY_CURRENT_USER;
        if freg.OpenKey( '\Software\test',false ) then
            chvalue[4]:=freg.ReadString('sign');
        freg.CloseKey;
        freg.Destroy;
           txtst:=tstringlist.Create;
                 if  Binary.Checked then
                  begin
                    txtst.Delimiter:=chvalue[4][1];
                    txtst.DelimitedText:=copy(Original.Text,1,length(Original.Text)-1);
                    for j:=0 to txtst.Count-1 do
                      begin
                        txttemp:=txtst.Strings[j];
                        txtresult:=txtresult + txttemp;
                      end;
                  end;
           Target.Text:= txtresult;上面是完整的代码了
    循环完毕程序就死在那里了.
      

  4.   

    以下代码经过测试,没出现问题var
      txttemp, txtresult, ascchr: string;
      txtst: Tstringlist;
      j: integer;begin
      if Binary.Checked then
      begin
        txtst := Tstringlist.Create;
        txtst.Delimiter := '%';
        txtst.DelimitedText := copy(Original.Text, 1, length(Original.Text) - 1);    for j := 0 to txtst.Count - 1 do
        begin
          txttemp := txtst.Strings[j];
          memo1.Lines.Add(txttemp);
    //      showmessage(txttemp);
        end;
      end;
    end;