s := 'abde, dwss,,addf,eft,gggds'怎样写一个函数, function GetStr(i: integer): string;可以获得第i个逗号与第i + 1个逗号之间的字符。
例如:GetStr(4);可以获得第四个逗号与第五个逗号之间的字符:eft, 请问又没有什么比较好的方法, ? 多谢!

解决方案 »

  1.   

    easyfunction GetStr(i: integer): string;
    var
      tip:TStringList;
    begin
      result:='';
      if i<0 then exit;
      tip:=TStringList.Create ;
      try
        tip.Delimiter :=',';
        tip.DelimitedText :='abde, dwss,,addf,eft,gggds';
        if i>tip.Count -1 then exit;
        result:=tip[i];
      finally
        tip.Free;
      end;
    end;//另:那个字符串应该也做一个参数比较好
      

  2.   

    楼上正解,用TStringList 比较方面
    如果楼主非要自己写判断程序取的话
    var
      i,j:integer;
      DataStr,Resultstr :string;begin
    DataStr  :='abde, dwss,addf,eft,gggds';
    j:=3;//(要去的第n个“,”开始的数据,可以用函数传过来)
    for i:=1 to j do
    begin
      DataStr := copy(DataStr,pos(',',DataStr)+1,length(DataStr)-pos(',',DataStr));
      i:=i+1;
    end;
    Resultstr :=copy(DataStr,1,pos(',',DataStr)-1); //这就是你要取的字符串  
    end;
      

  3.   

    function GetStr(AString : String;ToIndex : Integer) : String;
    var
      AText : String;
      Index : Integer;
    begin
      AText := AString;
      Result := '';  if AText = '' then Exit;
      if RightStr(AText,1) <> ',' then AText := AText + ',';
      for Index := 0 to ToIndex do
      begin
        Result := MidBStr(AText,1,Pos(',',AText)-1);
        AText  := MidBStr(AText,Pos(',',AText)+1,Length(AText));
      end;
    end;调用:
    GetStr('abde, dwss,,addf,eft,gggds' ,4)