Buenas!.
Estoy ejecutando un test y me devuelve violación de segmento rápidamente. A ver como se depura eso.
Es un error en tiempo de ejecución.
Os adjunto el código. Lo primero que se me ocurre es que el array crece y crece.
Código:
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
En la primera función no uso el componente gb.util y en el siguiente si. Casi me da igual en resultado por eso lo del test.
Por otra parte nadie recibe el valor devuelto por la función. Que podría ser un procedimiento que no devuelva valor.
De un post explicado que es y con el lenguaje "C"..yikes! ..es broma.
¿Qué significa Violacion de Segmento?
Algo común: Se produce cuando...
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 ).
El error se produce en Object.Call desde la primera vez.