| 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 |