自定义的一个结构TChatData
再定义一个此结构的数组SendGroupMessage : array of TChatData;
传递参数的时候我用的是地址@SendGroupMessage
给另一个赋值的时候tempMessage : array of TChatData;
怎么处理?
tempMessage := value^;???

解决方案 »

  1.   

    value 是一个TChatData结构的数组的地址.
      

  2.   

    Type
       TChatDataArray=array of TChatData;var
       SendGroupMessage:TChatDataArray;
       tempMessage:TChatDataArray;
    begin
       tempMessage:=SendGroupMessage;
    end; 
      

  3.   

    我晕。
    开玩笑嘛,我的题目真写的有问题,没看懂?tempMessage := value^;???
    value 是一个TChatData结构的数组的地址,
    如何赋给一个TChatData结构的数组
      

  4.   

    设置tempMessage的长度,然后一个个复制
      

  5.   

    type
      TChatData = record
      end;  PChatDataAry = ^TChatDataAry;
      TChatDataAry = array of TChatData;
    var
      SendGroupMessage: TChatDataAry; 
     ...
    var
      TempMessage: PChatDataAry;
    begin
      TempMessage := @SendGroupMessage;
    end;没测试,不知道是否可以
      

  6.   

    type
      TChatData = record
        sData : String;
      end;
      TChatMessage = array of TChatData;procedure ProcessMessage(AMessage: TChatMessage);
    var
      tmpMessage : TChatMessage;
      iCount     : Integer;
      iLoop      : Integer;
    begin
      iCount := High(AMessage);
      SetLength(tmpMessage, iCount + 1);
      for iLoop := 0 to iCount do tmpMessage[iLoop] := AMessage[iLoop];
      tmpMessage[0].sData := 'XXX';
      tmpMessage[1].sData := 'YYY';
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      SendGroupMessage : TChatMessage;
    begin
      SetLength(SendGroupMessage, 2);
      SendGroupMessage[0].sData := '111';
      SendGroupMessage[1].sData := '222';
      ProcessMessage(SendGroupMessage);
      ShowMessage(SendGroupMessage[0].sData);
      ShowMessage(SendGroupMessage[1].sData);
    end;
      

  7.   

    AMessage的值实际上是个指针值, 如果这样写的话:procedure ProcessMessage(AMessage: TChatMessage);
    var
      tmpMessage : TChatMessage;
    begin
      tmpMessage := AMessage;
      tmpMessage[0].sData := 'XXX';
      tmpMessage[1].sData := 'YYY';
    end;tmpMessage实际上就是SendGroypMessage, 而不是它的副本, 因此函数返回后, SendGroupMessage的内容被改变了。
      

  8.   

    传参数时用var 不是很好嘛