我不明白你要究竟要搞什么,要是传参数到中间层,哪就在中间层定义一个接口,前台调用就可以了,干吗搞这么复杂的。还有delphi的string在com中用
WideString。

解决方案 »

  1.   

    我是说,在com中用wideString会把非可见字符(按制符啦之类的东西)删掉,如果不通过com这就是正常的。
    这就是我想解决的问题.
      

  2.   

    那就用OLEVARIANT 类型的参数吧,呵呵,它可是功能强大,连clientdataset也可以传递,可以满足你的需要吧
      

  3.   

    试用OleVariant:
    var
      o: OleVariant;
      s: TStringStream;
      n: Longint;  o:=VarArrayCreate([1, s.Size], varByte);
      for n:=1 to s.Size do 
        o[n] := s.DataString[n];将o传过去!
      

  4.   

    转帖From:  "David Lewis "(borland newsgroup)On the client :procedure TransferFile( FileName: String );
    var
       AStream: TFileStream;
       FileSize: Integer;
       FileVariant: OleVariant;
       MyBuffer: Pointer;
    begin
         AStream := Nil;
         FileVariant := DComConnection.AppServer.TransferFile( FileName );
         If VarIsNull( FileVariant ) Then
             Exit;     Try
            If FileExists( FileName ) Then
               AStream := TFileStream.Create( FileName, fmOpenReadWrite )
            Else
               AStream := TFileStream.Create( FileName, fmCreate );
            FileSize := VarArrayHighBound( FileVariant, 1 ) + 1;
            MyBuffer := VarArrayLock( FileVariant );
            AStream.Write( MyBuffer^, FileSize );
            VarArrayUnlock( FileVariant );
         Finally
            If Assigned( AStream ) Then
               AStream.Free;
         End;
    end;Then on the server, I created an automation method to supply the file :function GetTransferFile( FileName: OleVariant ): OleVariant;
    var
       AStream: TFileStream;
       MyBuffer: Pointer;
    begin
         Result := Null;
         AStream := Nil;     If Not FileExists( FileName ) Then
            Exit;     Try
            AStream := TFileStream.Create( FileName, fmOpenRead );
            Result := VarArrayCreate( [0, AStream.Size - 1], VarByte );
            MyBuffer := VarArrayLock( Result );
            AStream.ReadBuffer( MyBuffer^, AStream.Size );
            VarArrayUnlock( Result );
         Finally
            AStream.Free;
         End;
    end;