2009-11-13 6 views
1

J'ai un OLEVariant déguisé en objet .Net que je reçois d'un composant côté client sur le réseau. Je sais que le contenu est un tableau d'octets, mais je ne sais pas comment convertir ces contenus en un tableau d'octets .Net natif (octet []). Des indices sur la façon dont je peux accomplir la conversion?OLEVariant à .Net byte []

Modifier: Nous avons répondu à notre propre question. Pour prendre un OleVariant (de type array of bytes) à un byte .Net, il faut pomper l'objet tel qu'il est dans un tableau .Net, en prenant les limites supérieures du tableau, en créant un nouvel octet [] de taille supérieure puis enfin faire un Array.Copy().

Répondre

1

Convertissez l'objet en octet [] avec (byte[])myobj ou myobj as byte[].

+0

Quelqu'un veut expliquer le downvote? J'ai fait ce code exact entre Delphi et C#. –

+0

Je ne sais pas d'où vient le downvote. En tout cas, j'ai essayé de lancer et ça n'a pas marché. Peut-être que j'ai fait quelque chose de mal. Je vais vérifier à nouveau. –

+0

Je viens d'examiner ce code - il remonte à mi-2008, mais ce que je vois est un serveur Delphi COM + retournant un OleVariant (pas sûr si le type OleVariant de Delphi est différent de OLEVariant) et le C# a juste un byte [] resultat = controller.Result comme octet []. Le côté .NET utilisait une classe proxy COM auto-générée pour communiquer avec le contrôleur, ce qui, selon moi, devait renvoyer le résultat en tant que type Object. Désolé, je n'ai plus de petits trucs pour vous aider. –