设有一记录,该记录各字段以逗号分格
aaaa,bbbb,cccc,dddd,eeee
1111,23432443232,4324232,3232323,3434343
各字段长度不一样,甚到有的字段很长,而这样的字段可能不需要提取
需要得到这样的变量:
A=aaaa
B=bbbb
c=dddd
....
在C里有一个函数strtok可以依次读取其中各字段
各位高手:delphi里有这样的函数吗,一定要定义该文件为记录型文件吗

解决方案 »

  1.   

    有TStringListvar
     sl: TStringList;
    begin
      sl := TStringList.Create;
      try
        sl.CommaText := 'aaaa,bbbb,cccc,dddd,eeee';
        //这样就以逗号为分隔存到字符串列表中了,这时sl[0] = 'aaaa',sl[1] = 'bbbb',...
      finally
        sl.Free;
      end;
    end;
      

  2.   

    function ExtractFieldName(const Fields: string; var Pos: Integer): string;
    var
      I: Integer;
    begin
      I := Pos;
      while (I <= Length(Fields)) and (Fields[I] <> ',') do Inc(I);
      Result := Trim(Copy(Fields, Pos, I - Pos));
      if (I <= Length(Fields)) and (Fields[I] = ',') then Inc(I);
      Pos := I;
    end;var
      Pos:integer;
    begin
      Pos := 1;
      while Pos <= Length(FieldNames) do
      begin
        showmessage(ExtractFieldName(FieldNames, Pos));
      end;
    end;其實Delphi的DB單元有一個ExtractFieldName函數, 只不過它要求以";"分號分隔
      

  3.   

    补充一下1楼的var
        sl : TStringlist;
    begin
        ....
        sl.Delimiter :=',';
    //TStringlist默认的Delimiter是逗号,如果分隔符是其他字符,需要另外指定 
        sl.CommaText := 'aaa,bbb,ccc';
        aaa := sl.Strings[0];
        .....
    end;