如果一个数据结构定义成这样会不会很奇怪,或者是不合规矩不合规范
  temp= packed record
    i: Integer;
    q: array of Byte;//动态数组
  end;
因为当对成员q动态设置不同长度的时候,每个结构体的大小不是都不一样,这样做好吗?

解决方案 »

  1.   


    implementation{$R *.dfm}type
      TArr = class
      private
        I: Integer;
        Q: array of byte;
      public
        procedure SetQLen(QLen: Integer);
      published
        constructor Create(iVal, QLen: Integer);
        destructor Free;
      end;{ TArr }constructor TArr.Create(iVal, QLen: Integer);
    begin
      I := iVal;
      SetQLen(QLen);
    end;destructor TArr.Free;
    begin
      SetQLen(0);
    end;procedure TArr.SetQLen(QLen: Integer);
    begin
      SetLength(Q, QLen);
    end;{--------------}procedure TForm1.Button1Click(Sender: TObject);
    var
      X: array[1..3] of TArr;
      I: Integer;
    begin
      for I := Low(X) to High(X) do {创建}
        X[I] := TArr.Create(I,I);
      for I := Low(X) to High(X) do {测试}
        Showmessage(Format('I=%d,Len(Q)=%d,Q[0]=%d',[X[I].I, Length(X[I].Q), X[I].Q[0]]));
      for I := Low(X) to High(X) do {析构}
        X[I].Free;
    end;