Public Sub btnSelectDir_Click()
ObtenerNomArchivos(ruta)
End
Public Sub ObtenerNomArchivos(directorio As String)
Dim archivos As String[]
archivos = Dir(directorio, "*.*", gb.File)
If archivos.Length = 0 Then
Return
Else
TestBenchMark("ObtenerExtensiones", archivos)
TestBenchMark("ObtenerExtensiones2", archivos)
Endif
End
Public Sub TestBenchMark(nombrefuncion As String, aelementos As String[])
Dim i, t As Float
Dim ob As Object
ob = Me
t = Timer
For i = 1 To 10 ^ 6
Object.Call(ob, nombrefuncion, aelementos)
Next
Print "Tiempo para 10^6 repeticiones, método: " & nombrefuncion & " = " & "\t"; Format(Timer - t, "0.######") & "s" & "\t"
End
Public Sub ObtenerExtensiones(aarchivos As String[]) As String[]
Dim aextensiones As New String[]
Dim nombref As String
Dim extension As String
Dim pos As Integer
For Each nombref In aarchivos
pos = RInStr(nombref, ".")
extension = Mid(nombref, pos + 1)
If Not aextensiones.Exist(extension) Then
aextensiones.Add(extension)
Endif
Next
Return aextensiones
End
Public Sub ObtenerExtensiones2(aarchivos As String[]) As String[]
Dim aextensiones As New String[]
Dim nombref As String
Dim extension As String
For Each nombref In aarchivos
extension = File.Ext(nombref)
If Not aextensiones.Exist(extension) Then aextensiones.Add(extension)
Next
Return aextensiones
End
Cita:- Intentar acceder una variable que ya fue liberada.
- Intentar escribir sobre una variable de solo lectura. ( No se da el caso , no es una propiedad ).
Public Sub TestBenchMark(nombrefuncion As String, aelementos As String[])
Dim i, t As Float
Dim ob As Object
Dim valores As String[]
ob = Me
t = Timer
For i = 1 To 10
valores = Object.Call(ob, nombrefuncion, [aelementos])
Next
Print "Tiempo para 10^6 repeticiones, método: " & nombrefuncion & " = " & "\t"; Format(Timer - t, "0.######") & "s" & "\t"
End
Public Sub TestBenchMark(nombrefuncion As String, aelementos As String[])
Dim i, t As Float
Dim ob As Object
Dim valores As String[]
Dim maximo As Integer
maximo = 1000
ob = Me
t = Timer
For i = 1 To maximo
valores = Object.Call(ob, nombrefuncion, [aelementos])
Next
Print "Tiempo para " & Str(maximo) & " repeticiones, sobre " & Str(aelementos.Length) & " elementos. Usando " & "método: " & nombrefuncion & " = " & "\t"; Format(Timer - t, "0.######") & "s" & "\t"
End
Cita:
Tiempo para 1000 repeticiones, sobre 9970 elementos. Usando método: ObtenerExtensiones = 1,041783s
Tiempo para 1000 repeticiones, sobre 9970 elementos. Usando método: ObtenerExtensiones2 = 1,360042s
(10-10-2022, 16:16)Shell escribió: Pero lo cierto es que aelementos ya es un array.
(10-10-2022, 20:47)vuott escribió: en este caso un array de... array
Public Sub Main()
Dim i As Integer
Dim bb As Byte[] = [1, 2, 3, 4]
Dim c As New Byte[][]
' ↑ ↑ bidimensional
c = [bb]
i = Object.Call(Me, "Mediterraneo", c)
Print i
End
Public Function Mediterraneo(a As Byte[]) As Integer
Dim i As Integer
i = a[2] * 10000
Return i
End