请问大家,在DELPHI 中如何对“@|23|D|A|'字符串分隔,按照‘|’分隔后放在数组中!谢谢

解决方案 »

  1.   

    if POS('|',Str)<>0 then 
    while not eof do 
    begin
    end
      

  2.   

    type
      TArray = array of string;procedure TrimChar(s:string;var sRet : TArray);
      function CountChar(s:string; c:char):integer;
      var
        i : integer;
      begin
        result := 0;
        for i := 1 to Length(s) do
          if s[i] = c then Inc(result);
      end;
    var
      iPos : integer;
      i    : integer;begin
      SetLength(sRet, CountChar(s, '|') + 1);
      iPos := Pos('|', s);
      i := 0;
      while iPos > 0 do
      begin
        sRet[i] := Copy(s, 1, iPos - 1);
        Delete(s, 1, iPos);
        iPos := Pos('|', s);
        Inc(i);
      end;
      sRet[i] := s;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sA : TArray;
      s  : string;
      i  : integer;
    begin
      s := '“@|23|D|A|';
      sA := nil;
      TrimChar(s, sA);
      for i := Low(sA) to High(sA) do
        Memo1.Lines.Add(sA[i]);
    end;
      

  3.   

    function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;例:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:String;
    begin
      s:='11.22.33.44';
      ExtractStrings(['.'],[' '],pchar(s),memo1.Lines);
    end;