`在SQL数据库表Pri中,有一权限字段Privilege,是Text类型的,其值可表示为SM_insert,SM_delete...SM_insert为操作权限,权限之间用,隔开,现在我要讲其取出来,select privilege from pri where,但是我怎么将SM_Insert等权限分离出来,存储到数组中去,请帮忙 !!

解决方案 »

  1.   

    procedure GetFieldsName(Fields: TStringList; FieldNames: String);
    var
      Pos: Integer;
      Field: String;
    begin
      Pos := 1;
      while Pos <= Length(FieldNames) do
      begin
        Field := ExtractFieldName(FieldNames, Pos);
        if Assigned(Fields) then Fields.Add(Field);
      end;
    end;
    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;
      

  2.   


    var P:array of String;
        i,k,count:integer;
     
    count:=0;
    k:=1;
    for i:=1 to Privilege do begin
      if Privilege[i]:=',' then begin
        Count:=Count+1;
        Setlength(p,Count);
        p[count-1]:=copy(Privilege,k,i-k);
        k:=i+1;
      end;
    end;
    ----------------------------------------------
                       riff ur life
      

  3.   

    var P:array of String;
        i,k,count:integer;
     
    count:=0;
    k:=1;
    for i:=1 to length(Privilege) do begin
      if Privilege[i]:=',' then begin
        Count:=Count+1;
        Setlength(p,Count);
        p[count-1]:=copy(Privilege,k,i-k);
        k:=i+1;
      end;
    end;
    ----------------------------------------------
                       riff ur life
      

  4.   

    用substring函数或用like 语句。sorry ,看错了,
    应该:while( pos(privilege,',') <> 0 ) do 
    begin
      数组[]=copy(rivilege,1,pos(privilege,','));
      delete(rivilege,1,pos(privilege,','));
    end;