Ciao,Originariamente inviato da icecube_HT
Beh... proprio chiarissimo.... NO...
Hai provato ad usare un array dinamico? :
Dim MyBuffer () as byte
....
ReDim MyBuffer (0 to 6000000)
...
lungh=ChiamaLaRoutine(...)
ReDim Preserve MyBuffer (0 to lungh)
![]()
mi spiace di non essere stato chiaro![]()
faro' un esempio ...
Da una funzione A ricevo 2 elementi :
1) un numero X di elementi (i miei byte )
2) nell'altro valore quanti sono i miei elementi
partendo dal presupposto che l'elemento N 1 viene passato per riferimento (byref) da una funzione, e' ovvio che io devo crearmi un array pronto e capiente a sufficenza a ricevere i miei byte.
Pertanto se dimensiono il mio array :
Dim MyBuffer () as byte
Faccio un errore xche' il mio array non e' dimensionato abbastanza !
Allora devo dimensionarlo con un valore che reputo (per eccesso) di circa 6MB avremo
Dim MyBuffer (0 to 6291456) as byte
Solo adesso potro' passarlo per riferimento alla funzione:
Call Myfunction(Mybuffer(0), Lenbuffer)
Mybuffer(0) ... vuol dire che gli passo il primo elemento dell' array
Lenbuffer e' la lunghezza di cui parlavo prima, che mi viene restituita dalla funzione stessa
(per altri linguaggi, e' importante ricevere anche la dimensione del buffer di dati .. si tratta comunque di una immagine,in modo da poterlo passare per dimensionare uno Stream)
Cosi' facendo mi ritrovo il mio Mbuffer che contiene una bella immagine ... pero' ho un piccolo problema, in altri linguaggi avrei usato : Mystream.Read(Mybuffer,lenbuffer)
ed avrei dimensionato automaticamente lo stream ... ma in VB forse questo non e' possibile.
Ritornando a noi l'unico modo (che io conosco) per passare il mio buffer ad uno stream (per poi poterlo salvare su disco ) e' :
myStream.Write(Mybuffer)
L'unico mio problema e che se salvo cosi' ho un file immagine SEMPRE di 6MB ....
ecco perche' vorrei ridimensionare il mo buffer...
Forse ti ho incasinatoVVoVe: + di prima ... ma almeno ci ho provato
![]()