matriz pila

Trabajo de litdev (Scotland) Moderador Small Basic Forum
http://social.technet.microsoft.com/wiki/contents/articles/15066.small-basic-stack-basics.aspx
Queremos crear una matriz con todos los archivos de imagen jpg de un directorio y todos los subdirectorios, buscando todas las carpetas de forma recursiva.
Primero creamos un array (matriz) vacío para almacenar las rutas de los archivos de imagen y el número de archivos en el mismo (cero para empezar). También establecemos la carpeta de empezar a buscar y agregarlo a una pila que llamamos “folders” (carpetas). En este ejemplo, la ubicación de la carpeta de inicio es la carpeta donde está guardado el archivo Small Basic fuente (Program.Directory
images = “”
imageCount = 0
startFolder = Program.Directory
Stack.PushValue(“folders”,startFolder)
Ahora vamos a seguir trabajando mientras nosotros tenemos carpetas todavía para comprobar, o la pila todavía tiene algunas carpetas en el mismo. Nosotros usamos un bucle while para esto. Dentro del bucle, mientras que nosotros queremos procesar la última carpeta añadida, por lo que se metió primero
While Stack.GetCount(“folders”) > 0
currentFolder = Stack.PopValue(“folders”)
‘ More work to do here
EndWhile
Ahora queremos procesar esta carpeta, primero tenemos todas las subcarpetas, de la carpeta de trabajo actual y empujar a estos en la pila para su posterior comprobación de que las while repite.
folders = File.GetDirectories(currentFolder)
For i = 1 To Array.GetItemCount(folders)
Stack.PushValue(“folders”,folders[i])
EndFor
Después de haber añadido las sub-carpetas para comprobar más tarde como se desenrolla la pila, nos encontramos con todos los archivos en la carpeta de trabajo actual y añadir otras que terminan en “. Jpg” a la lista de Array (matriz). Comprobamos el archivo por primera conversión a minúsculas, con el fin de incluir todas las variantes de caja de jpg a JPG etc
files = File.GetFiles(currentFolder)
For i = 1 To Array.GetItemCount(files)
fileName = files[i]
fileNameLower = Text.ConvertToLowerCase(fileName)
If (Text.EndsWith(fileNameLower,”.jpg”)) Then
imageCount = imageCount+1
images[imageCount] = fileName
EndIf
EndFor

Por último, imprimir los resultados, y por ahora es todo.

images = “”
imageCount = 0
startFolder = Program.Directory
Stack.PushValue(“folders”,startFolder)
While Stack.GetCount(“folders”) > 0
currentFolder = Stack.PopValue(“folders”)
folders = File.GetDirectories(currentFolder)
For i = 1 To Array.GetItemCount(folders)
Stack.PushValue(“folders”,folders[i])
EndFor
files = File.GetFiles(currentFolder)
For i = 1 To Array.GetItemCount(files)
fileName = files[i]
fileNameLower = Text.ConvertToLowerCase(fileName)
If (Text.EndsWith(fileNameLower,”.jpg”)) Then
imageCount = imageCount+1
images[imageCount] = fileName
EndIf
EndFor
EndWhile
For i = 1 To Array.GetItemCount(images)
TextWindow.WriteLine(images[i])
EndFor

Deja un comentario