该段函数功能为 将字符串viewstring 从第二个字符开始分成6一个组的子字符串。  但是不定时的出现问题:viewstring有数据,而子字符串Temper[i】为空!?
  for i:=1 to 12 do
      begin
        try
          Temper[i] := Copy(viewstring, i*6+2 , 6);
          ff :=  strtofloat(Temper[i]);
        except
           ff:= 0;
           Form1.StatusBar1.Panels[1].Text:=  'error';
        end;

解决方案 »

  1.   

    var
      paragraph, tail, count: integer;
      
    begin
      paragraph:=(Length(viewstring)- 1) div 6; tail:= (Length(viewstring)- 1) mod 6;
      for cout:= 0 to paragraph - 1 do
      begin
        temper[i]:= Copy(viewstring, i* 6+ 2, 6);
        ff:= StrToFloat(Temper[i]);
      end;
      if tail <> 0 then
      begin
        temper[paragraph]:= Copy(viewstring, (paragraph- 1)* 6, tail);
        ff:= StrToFloat(temper[paragraph]);
      end;
    end;
    这样试一下。
      

  2.   

      temper[paragraph]:= Copy(viewstring, (paragraph- 1)* 6, tail); 
    应改为
      temper[paragraph]:= Copy(viewstring, paragraph* 6, tail); 
      

  3.   

    "......从第二个字符开始分成6一个组的子字符串......"那么:
      for i:=1 to 12 do 
      begin 
        ......
        Temper[i] := Copy(viewstring, i*6+2 , 6); 
        ......
    这里的 i*6+2 就不正确了, 应该写成 i*6-4
      

  4.   

    谢谢owlet_leo和jadeluo两位~~To  owlet_leo :  viewstring长度为74 是定值  字符串的格式为 A1234.51234.51234.51234.51234.51234.51234.51234.51234.51234.51234.51234.5#13
    我需要取得数据1234.5。 平时都是正常工作的,但是有时候会出现Temper[i]为空的现象(是在程序报错后在程序里面查看到的)。To jadeluo:
     呵呵  谢谢你的细心, 我程序里面有-1的, 为了简化明了,使我粗心改错了
      

  5.   

    估计还是编码分割和循环的问题,大概是直接把#13读进去了,所以temper为空。
    即便是定值,最好还是事先测定一下长度。而且这样的代码也有更好的适应性和安全性,也可以不依赖于具体的字串长度。如果非常确定字串的格式,那么可以在分割前,进行截断,即,你的例中,去掉开头和结尾的两个字符,然后再判定,分割,循环。
    另外,最好,将数组的下标用[0..N]虽然O.P.的下标可以很灵活的应用,但是,从0开始的下标往往会有很多便利和好处。虽然这是遵循C的规范。但如我举的代码中,
    for cout:= 0 to paragraph - 1 do 
    begin 
      temper[i]:= Copy(viewstring, i* 6+ 2, 6); 
      ff:= StrToFloat(Temper[i]); 
    end; 
    如果temper的下标是从0开始的,那么之需要如上所示,而不需要变成 i* 6- 4 这样容易费解(毕竟这有点倒序的意思)的方式表述下标了。
    加之Windows是多C/C++的实现,其中很多控件结构中的数组都是以0下标开始的,所以还是养成以0最为数组初始下标比较好。
    因为没有更多的上下文,我也只能按一般的状况猜测。