2009-08-28 21 views
12

¿Cómo se puede recuperar el último elemento de una matriz de cadenas en Visual Basic 6?¿Obtiene el último elemento de la matriz de cadenas en vb6?

Estoy tratando con nombres de archivos con múltiples puntos que se dividen en una matriz, y quiero manipular solo la extensión. El siguiente código funciona, pero tiene un elemento codificado que quiero eliminar.

Private Sub Form_Load() 
    Dim aPath() As String 
    Dim FileName As String 
    Dim realExt As String 

    FileName = "A long dotty.file.name.txt" 
    aPath = Split(FileName, ".") 

    realExt = aPath(3) ' <-- how to not hardcode?' 

    MsgBox ("The real extension is: " & realExt) 
    Unload Me 
End Sub 
+1

¿Por qué no acaba de encontrar el último índice del '.' personaje en la cadena? –

Respuesta

25

Creo que usando Ubound debe hacer el truco:

Private Sub Form_Load() 
    Dim aPath() As String 
    Dim FileName As String 
    Dim realExt As String 

    FileName = "A long dotty.file.name.txt" 
    aPath = Split(FileName, ".") 

    realExt = aPath(UBound(aPath)) 

    MsgBox ("The real extension is: " & realExt) 
    Unload Me 
End Sub 
3
realExt = aPath(ubound(aPath)) 
+0

- muchas gracias! –

0

Sin embargo, si en realidad es sólo la extensión que está buscando, esto sería hacer el trabajo:

Private Sub Form_Load() 
    Dim sFileName As String 
    Dim lPos As Long 
    Dim sRealExt As String 

    sFileName = "A long dotty.file.name.txt" 
    lPos = InStrRev(sFileName, ".") 
    If lPos Then sRealExt = Mid$(sFileName, lPos + 1) 
End Sub 
Cuestiones relacionadas