如题

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
       TempStream : TMemoryStream;
       v : olevariant;
    begin
      TempStream := TMemoryStream.Create;
      V :='99999';
      listbox1.Items.Add(v);
      listbox1.Items.SaveToStream(TempStream
      TempStream.Position := 0;      
      RichEdit1.Lines.LoadFromStream( TempStream); 
      TempStream.Free;
    end;
      

  2.   

    如果olevariant不是字符类型的也可以这样吗?
      

  3.   

    procedure TCommClient.DoOnData(aData: OleVariant; const aSource: WideString; out aAction: Integer);
    var
      S : TMemoryStream;
      P : Pointer;
      L : Integer;
    begin
      if Assigned(FOnData) then
        begin
        S := TMemoryStream.Create;
        try
          //将传过来的安全数组转换为TStream类型,触发事件
          L := VarArrayHighBound(aData, 1) - VarArrayLowBound(aData, 1) + 1;
          P := VarArrayLock(aData);
          try
            S.Seek(0, soFromBeginning);
            S.WriteBuffer(P^, L);
          finally
            VarArrayUnlock(aData);
          end;      FOnData (Self, S, aSource, aAction);
        finally
          S.Free
        end;
        end;
    end;
      

  4.   

    十分感谢 cg1120(代码最优化-§为这世界,添些美丽色彩§),可以说说如何把TMemoryStream转化为OleVariant吗?上面的代码只是OleVariant转化成TMemoryStream的。