A mi me gustan las matrices dentro de otras matrices, y lo que quiero es tener varios archivos en matrices de esta forma:
filedata(0)(1 to FileLen(file1))
filedata(1)(1 to FileLen(file2))
filedata(2)(1 to FileLen(file3))
filedata(3)(1 to FileLen(file4))
filedata(4)(1 to FileLen(file5))
Una matriz filedata, cada elemento de la matriz es una matriz que contiene un array de bytes de cada archivo
Eso consigo hacerlo, lo malo es que tengo que declarar esto:
Código
Dim i As Long Dim file(0 to 3) As String file(1) = "C:\archivo1.txt" file(2) = "C:\archivo2.txt" file(3) = "C:\archivo3.txt" ReDim filedata(0 to numerodearchivos) As Variant For i = LBound(file) to UBound(file) ReDim tempfiledata(0 to FileLen(file(i)) - 1) As Byte filedata(i) = tempfiledata Erase tempfiledata Next i
Weno, como veis tengo que utilizar una matriz tempfiledata temporal, pero este no es el mayor problema, sino que si tengo que pasar esta matriz a una funcion pues me da un error:
Imaginaros esta funcion:
Código
Function convertirBytes (ByRef filedata() As Byte) As Long 'Ahora aki iria cualkiera cosa, el argumento lo paso ByRef pork las matrices hay que pasarlas siempre ByRef End Function
Pues cojed el primer code que puse, pues si después llamo a la funcion así me da un error:
Código
Call convertirBytes (filedata(0))
En teoría filedata(0) es un array de bytes, y la funcion es lo que pide, pero me da un error. Yo creo que el error se debe a que filedata está declarada como Variant...pero la tengo que declarar como Variant para después poder meter dentro el array de bytes...Si la declaro como Byte despues no puedo meter dentro un array de Bytes...
La unica solución que encontré fue algo parecido a lo que hice al principio, usar una matriz temporal. Llamaría a la funcion de esta forma:
Código
ReDim tempfiledata (LBound(filedata(0)) to UBound(filedata(0))) As Byte tempfiledata = filedata(0) Call convertirBytes (tempfiledata) Erase tempfiledata
Entonces así si que me funcionaría...pero imaginate que tengo que llamar a muchas funciones y tengo muchos archivos y grandes (es decir, muchos array de bytes), pues entonces andar pasando grandes cantidades de bytes a variables temporales reducen la velocidad de la aplicación...
Por eso me gustaría que me dierais posibles solucíones, lo importante es pasar a una funcion que pide un array de bytes pues eso, un array de bytes que está contenida en otra matriz...más claro no lo puedo decir...
Weno, si alguien me puede ayudar que escriba algo, espero vuestra ayuda, un saludo