procedure TForm1.Button2Click(Sender: TObject);
var
  i:integer;
  tf : Textfile;
  mobile: string;
begin  if OpenDialog1.Execute then
    begin
      Memo1.Lines.LoadFromFile(opendialog1.filename);
      assignfile(tf, opendialog1.FileName);
      reset(tf);
      readln(tf, mobile);
      i:=0;
      while mobile <> #$1A do
      begin
        array1[i]:=mobile;
        i:=i+1;
        readln(tf, mobile);
      end;
    end;
    showmessage(inttostr(memo1.Lines.count));
end;procedure TForm1.Button1Click(Sender: TObject);
var
  j : Integer;
  s,st:string;
  i,i5:integer;
  a5:array[0..1000] of string;
  
begin
 for j:=0 to memo1.Lines.Count-1 do
 begin   s:=array1[j];
   st:=s;
   for  i5:=0 to 4 do
   begin
    i:=1;
    while copy(st,i,1)<>' ' do
    i:=i+1;
    a5[i5]:=copy(st,1,i-1);
    st:=copy(st,i+1,length(st)-i);
   end;   for i5:=0 to 4 do
   begin
   memo2.Lines.add(a5[i5]);
   end; end;
 showmessage('处理完毕');
end;

解决方案 »

  1.   

    第一按钮点击的功能是从一文本框中把文本内容每行放到数组中,第二按钮是把数组中的内容,即文本的每一行,以空格为间隔符号,取出前5个非空字符串,点击第二个按钮后,结果是出来了,但是处理完毕 没有跳出,程序也失去响应了,cpu也爆满了,请大哥们指点!
      

  2.   

    你的循环没有结束条件啊!
    while (mobile <> #$1A) and (i < 5) do
    begin
      array1[i]:=mobile;
      i:=i+1;
      readln(tf, mobile);
    end;
      

  3.   

    不是的阿 我上面不需要i<5的,我上面是为了取出文本中的所有内容阿,i只是为了增加数组下标本,循环结束是靠mobile <> #$1A,我出错的是在下面按钮点击以后错误阿
      

  4.   


          while mobile <> #$1A do
          begin
            array1[i]:=mobile;
            i:=i+1;
            readln(tf, mobile);
          end;无结束
      

  5.   

    for j:=0 to memo1.Lines.Count-1 do
     begin   s:=array1[j];// array1是否能取到memo1.Lines.Count-1 其他的看不出来有什么问题;你还是单步看看吧
      

  6.   

    加个
    ilao:真假begin
    ilao:真while 文件未结束 do
    begin
            array1[i]:=mobile;
            i:=i+1;
            readln(tf, mobile);
    if mobile <> #$1A then
    ilao:假
    强行结束循环
    end;
      

  7.   

    我的这段程序前面Button2Click并没有错误,Button1Click有结果,但同时程序失去相应,至于mobile <> #$1A我在另个程序中也是这样用的,我想大哥们帮我看看Button1Click里的问题!
      

  8.   

    for  i5:=0 to 4 do
       begin
        i:=1;
        while copy(st,i,1)<>' ' do
        i:=i+1;
        a5[i5]:=copy(st,1,i-1);
        st:=copy(st,i+1,length(st)-i);
       end;
    这段程序有问题,你的st若是'123_'(_代表空格)则没问题,若是'123'那可就死了你用这段程序试试就知道了:
    var
      i5,i:integer;
      s,st:string;
    begin
        st:='123';
        i:=1;
        while copy(st,i,1)<>' ' do
        i:=i+1;
        s:=copy(st,1,i-1);
        st:=copy(st,i+1,length(st)-i);
        edit1.Text:=s;
        edit2.Text:=st;
    end;
      

  9.   

    谢谢各位大侠,我的文本是自己手工做的不会有没空格的现象,我发现问题了,不过这个问题我还是莫名其妙,我有一个文本里面有11行,结果我在Button2Click中最后的showmessage居然显示25,郁闷 只要,我下面的Button1Click的for j:=0 to memo1.Lines.Count-1 就起不到作用了,以致程序不能结束,真是郁闷,不过我还是衷心的感谢各位大哥帮忙,谢谢你们和我探讨!