txt文件,记录有2w多条 其中每行数据有9个字段,但某些相同的列的数据不都是定长的,比如a1是8个字符长,可能a2就是10个字符长。字段之间通过tab键分开;
问题是我现在只需要取其中的3个字段 如 B ,G ,H .通过定长度用copy函数来取是肯定不行的,请问还有别的办法没?
记录情况如下排列:
 A1  B1  C1  D1  E1  F1  G1  H1  I1
 A2  B2  C2  D2  E2  F2  G2  H2  I2
  .   .   .   .   .   .   .   .   .
  .   .   .   .   .   .   .   .   .
  .   .   .   .   .   .   .   .   .
 A23000 B23000 C23000 D23000 E23000 F23000 G23000 H23000 I23000搞定马上结帖,先谢谢各位了。

解决方案 »

  1.   

    用Excel中就可以不用代码帮你搞定.数据菜单->获取外部数据->导入文本文件然后把多于的列删除就可以了.
      

  2.   

    用ODBC连接这个txt文件当数据库使
      

  3.   

    呵呵,用excel是肯定不行的,我是要先从txt文件读取数据,然后展示用户看,最后用户操作后保存到数据库中。
    问题已经被我解决了:
    具体方法是这样用一个字符串分割函数
    function SplitString(const source,ch:string):tstringlist;
    var
     temp:string;
     i:integer;
    begin
     result:=tstringlist.Create;
     temp:=source;
     i:=pos(ch,source);
     while i<>0 do
     begin
       result.Add(copy(temp,0,i-1));
       delete(temp,1,i);
       i:=pos(ch,temp);
     end;
     result.Add(temp);
    end;
    调用:
    s:=splitstring('要分割的字符串',#9);
    s中存放的就是分割后的数据,要取哪个就取哪个,比如我要取B
    则 B:=s.string[1];就可以了。后面还发现可以用这个函数直接点
    {以下是 ExtractStrings声明原形:
    function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings):
    Integer;
    其中:
    Separators表示分隔符
    WhiteSpace表示你所要分割字符串中要忽略的字符集
    Content就是你要操作的字符串
    Strings就是存放结果的var
      s:string;
      l:TStrings;
    begin
      s:= 'aasdl#9ajkls#9dasfjakls#9';
      l:=TStringList.Create;
      ExtractStrings(['#9'],[],PChar(s),l);
      ////多种分隔符也可以,结果存在l中
    end;