Estoy tratando de ejecutar un evento que va a buscar a través de los diferentes archivos en un directorio dado. El objetivo es que la búsqueda de todos los archivos que comienzan con «SP_», que son .el archivo sql que contiene los Procedimientos Almacenados. Entonces me gustaría añadir el texto completo de estos Procedimientos para una matriz para ser utilizado más tarde. Esto está causando un error cuando se ejecuta, que yo creo que es porque ‘FullProcedureArray()’, la matriz de cadena estoy tratando de carga no tiene límites definidos. Cuando yo lo declaro como » FullProcedureArray(7)’, o con algún otro valor, que parece funcionar bien. Pero yo no quiero tener que codificar un límite para ‘FullProcedureArray’; prefiero dejar que se define por cualquiera que sea el número de archivos en la carpeta.

Mi pregunta: ¿hay una manera de declarar ‘FullProcedureArray’ sin tener que dar un valor absoluto? Pensé que puede ser que falte algo dolorosamente obvio, pero no he trabajado con este tipo de matriz de mucho en el pasado. Gracias de antemano por su ayuda.

    Dim AppDataLocation As String = "C:\Files\TestFiles\"
    Dim ProcedureArray As String()
    Dim ProcedureText As String
    Dim FullProcedureArray() As String

    Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(AppDataLocation)

    Dim fileSystemInfo As System.IO.FileSystemInfo
    Dim i As Integer = 0
    For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos
        If (fileSystemInfo.Name.Contains("SP_")) Then
            ProcedureArray = System.IO.File.ReadAllLines(AppDataLocation & fileSystemInfo.Name)
            ProcedureText = Join(ProcedureArray, "")
            FullProcedureArray.SetValue(ProcedureText, i)
            i = (i + 1)
        End If
    Next

OriginalEl autor A. Still | 2012-02-24

2 Comentarios

  1. 8

    Una matriz por definición tiene un fijo de límite superior. Si usted no desea un fijo límite superior, no el uso de una matriz. Utilizar, por ejemplo, un Lista(De Cadena) lugar:

    Dim AppDataLocation As String = "C:\Files\TestFiles\" 
    Dim ProcedureList As New List(Of String)
    
    Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(AppDataLocation) 
    
    For Each fileSystemInfo As System.IO.FileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos 
        If (fileSystemInfo.Name.Contains("SP_")) Then 
            Dim ProcedureText As String = _
                System.IO.File.ReadAllText(AppDataLocation & fileSystemInfo.Name) 
            ProcedureList.Add(ProcedureText)
        End If 
    Next 

    Si, por alguna razón, usted todavía necesita el resultado como una matriz después, simplemente convertir la lista a una matriz:

    Dim myArray() As String = ProcedureList.ToArray()
    Esto es exactamente lo que yo necesitaba. Muchas gracias!

    OriginalEl autor Heinzi

Dejar respuesta

Please enter your comment!
Please enter your name here