文本格式,中间空格数量不一样,怎样按列读取,并写入xml中,谢谢
北京  5
041506    10.5  116.3  998   18  120 9999    11.7  114.0  990   23    13.4  111.8  985   25    15.8  110.6  
041512    11.0  115.4  998   18  150 9999    12.2  113.1  990   23    13.9  111.4  985   25    16.0  109.9  
041518    12.8  114.3  990   23  200 9999    14.7  111.5  980   30    16.2  110.0  985   25    18.1  108.9  
041600    13.1  113.2  985   25  200 9999    15.0  110.8  980   30    16.9  109.5  985   25    19.5  108.3  
041606    13.4  112.5  975   33  260   80    15.6  110.6  970   35    17.7  109.3  975   33    20.2  108.8  东京  5
041506    10.5  116.4  998   18  167 9999    11.3  113.6  994   21    12.8  111.6  992   11    13.9  109.7  
041509    11.0  115.6  998   18  167 9999    11.7  113.3  994   21  9999.0 9999.0  992   11  9999.0 9999.0  
041512    11.3  114.8  998   18  185 9999    12.7  113.0  992   23    14.0  111.1  990   12    16.1  109.0  
041515    12.0  114.4  998   18  185 9999    13.2  112.6  992   23  9999.0 9999.0  990   12  9999.0 9999.0  
041518    12.8  114.2  992   23  370 9999    15.2  112.2  985   26    16.8  111.0  980   13    18.5  110.0  

解决方案 »

  1.   

    //参考
    var
      List:Tstringlist;procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j,n:integer;
      s:string;
      printstr:array of array of string;
    begin
      List.LoadFromFile('new.txt');
      SetLength(printstr,List.Count,17);
      for i:=0 to List.count-1 do
      begin
        n:=0;
        s:=List[i];
        for j:=1 to Length(s) do
        begin
          if (Ord(s[j])=32) or (Ord(s[j])=9) then
          begin
            if (printstr[i,n]<>'') and (n<17) then
            begin
              showmessage(printstr[i,n]);
              inc(n);
            end;
          end
          else
            if n<17 then printstr[i,n]:=printstr[i,n]+s[j];
        end;
      end;
    end;