tranSyntax:= T_ASC_TransferSyntax.Create;while ( count > 0 ) do
        begin
             
             tranSyntax.Read(stream);
             count := count - tranSyntax.GetSize;
             TransSyntaxRQList.Add(tranSyntax);
             
        end;tranSyntax.Free;
有如上述一段代码。TransSyntaxRQList是TObjectList的对象,stream是TMemoryStream的对象。
我的目的是想把流中不知数目T_ASC_TransferSyntax的对象读出并加入到对象TransSyntaxRQList中,
好像在TransSyntaxRQList.Add(tranSyntax)时,后面读出的数据覆盖了前面的读出的数据,
即列表中所有的T_ASC_TransferSyntax对象都一样。如何写这段代码。

解决方案 »

  1.   

    tranSyntax是一个指针,TransSyntaxRQList.Add(tranSyntax)加入的实际是指针tranSyntax而不是一段真正的流。所以while ( count > 0 ) do执行完毕后,实际上,TransSyntaxRQList中所有的项都是tranSyntax,它指向最后读取的一段数据流。while count > 0 do
    begin
      tranSyntax:= T_ASC_TransferSyntax.Create;
      tranSyntax.Read(stream);
      count := count - tranSyntax.GetSize;
      TransSyntaxRQList.Add(tranSyntax);
      //tranSyntax.Free;不要Free
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————