Logo UGIdotNET

Discussione 'Variant con byte[]'

# Pubblicato il 27 dic 2003 20.43 - Rispondi
Dario Cerizza
Variant con byte[]
Ciao a tutti.
Mi sono trovato a dover utilizzare alcuni metodi di un oggetto COM che prendono in ingresso un byte[] e restituiscono un'altro byte[].
Il wrapper autogenerato da VisualStudio me li indica come se fossero degli object. Immagino che se sono trattati come Variant o SafeArray all'interno del codice COM.

Con C# ho provato ad utilizzare un codice del genere:
byte[] datiIn=new byte[].....con tutta l'inizializzazione corretta
byte[] datiOut;
int lungDatiOut;
obj.Metodo(datiIn,datiIn.length,datiOut,out lungDatiOut);

Ma naturalmente non funziona. Ottengo un errore specifico del metodo che mi dice che l'array in ingresso non è un byte[]. Purtroppo non ho modo di accedere ai sorgenti dell'oggetto COM per vedere come tratta i parametri di ingresso.

Ho visto che con il marshalling potrei fare qualche porva in più, però fino ad ora lo ho sempre usato con il DllImport della P-Invoke e credo serva solo per quello.
Visto che visual studio mi genera automaticamente il wrapper, ho provato ad usare tlbimp ma ottengo lo stesso problema. Tra i parametri di tlbimp non ho trovato niente per object o variant, solo per i metodi in e out.

Spero di non dover usare i Custom Wrapper, in fin dei conti è solo un array di byte. Se proprio devo, dite che mi conviene farmi un wrapperino in VB6 che legge il byte[] da un file temporaneo e scrive il risultato allo stesso modo ?

Grazie, ciao

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185