就是对record中的一个动态数组改变他的维数

解决方案 »

  1.   

    好像record里面不能有动态数组的吧,不知道我有没有记错
      

  2.   

    好像record里面不能有动态数组的吧,不知道我有没有记错
      

  3.   

    type
      aa=record
        a1:string;
        a2: array of array of string;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:aa;
    begin
       setLength(a.a2,1);
       SetLength(a.a2[0],10);
       a.a1 :='hello';
       a.a2[0,0]:='a2';
    end;
      

  4.   

    //直接调用runquery就可以啦,注意COLUMNS为字段数
    type
      TResults    = Array of Array of ShortString;function RunQuery(SqlStr: String;Columns:Integer;var ResultArr: TResults): Boolean;
    begin
      with F_DataModule.Qry_Public do
      begin
        Close;
        Sql.Clear;
        Sql.Add(SqlStr);
        Prepare;
        Open;
        if RecordCount = 0 then
        begin
          Result := False;
          ResultArr := nil;
          Close;
          Exit;
        end;
        ResultArr := DataSetToArr(F_DataModule.DS_Public.DataSet,Columns,-1000);
        Result := True;
      end;
    end;
    function DataSetToArr(CDataSet: TDataSet;Columns,RecordNum: Integer): TResults;
    var
      Arr: TResults;
      i,j,k: Integer;
    begin
      if RecordNum = -1000 then
        k := CDataSet.RecordCount
      else
        k := RecordNum;
      SetLength(Arr,k);
      For i := 0 to k -1 do
      begin
        SetLength(Arr[i],Columns);
      end;
      With CDataSet do
      begin
        First;
        i := 0;
        While Not Eof do
        begin
          For j := 0 to Columns -1 do
            Arr[i,j] := Fields[j].AsString;
          i := i + 1;
          Next;
        end;
      end;
      Result := Arr;
    end;