请高手帮忙看一下!!
     Filelist:=TStringList.Create;
     Filelist.LoadFromFile(FileName1);
     i:=Filelist.Count;
     a:=0;
     sum_fund:=0;
     money:=0;
     for n:=3 to i-1 do
     begin  //3
       Templist:=TStringList.Create;
       str1:=Filelist[n];  //取第n行字符
       str1:=stringreplace(str1,#13#10,'',[rfReplaceAll]);
       str1:=trim(str1);
       Templist.Delimiter:='|';
       Templist.DelimitedText:=str1;
       str2:=Templist.Strings[5];
       if str2='0' then a:=a+1;
       money:=strtoint(Templist.Strings[2]);
       sum_fund:=sum_fund+money;
       Templist.Free;
      end;
是因为文本中有回车符的原因么?如果是应该怎么解决?

解决方案 »

  1.   

    因为文件中有些行的内容中的|符号少于5个, Templist.DelimitedText:=str1;执行后, Templist[5]并不存在。     Filelist:=TStringList.Create;
         Filelist.LoadFromFile(FileName1);
         i:=Filelist.Count;
         a:=0;
         sum_fund:=0;
         money:=0;
         for n:=3 to i-1 do
         begin  //3
           Templist:=TStringList.Create;
           try
             str1:=Filelist[n];  //取第n行字符
             str1:=stringreplace(str1,#13#10,'',[rfReplaceAll]);
             str1:=trim(str1);
             Templist.Delimiter:='|';
             Templist.DelimitedText:=str1;
             if Templist.Count > 5 then
             begin
               str2:=Templist.Strings[5];
               if str2='0' then a:=a+1;
               money:=strtoint(Templist.Strings[2]);
               sum_fund:=sum_fund+money;
             end;
           finally
             Templist.Free;
           end;
          end;
      

  2.   

    for ...  downto ... do ....
      

  3.   

    Filelist:=TStringList.Create;
         Filelist.LoadFromFile(FileName1);
         i:=Filelist.Count;
         a:=0;
         sum_fund:=0;
         money:=0;
         for n:=3 to i-1 do
         begin  //3
           Templist:=TStringList.Create;
           str1:=Filelist[n];  //取第n行字符
           str1:=stringreplace(str1,#13#10,'',[rfReplaceAll]);
           str1:=trim(str1);
           Templist.Delimiter:='|';
           Templist.DelimitedText:=str1;       str2:=Templist.Strings[5];//确定每行都有5个字符以上吗?
            
           if str2='0' then a:=a+1;
           money:=strtoint(Templist.Strings[2]);
           sum_fund:=sum_fund+money;
           Templist.Free;
          end;