Ordenación en padres-hijos
Buenas!
Pues estoy liado con un problema que me lleva un par de días y no le veo solución (debe de ser de esas cosas que tienes delante de tus narices pero no salen hasta que les da la gana). La cosa es que tengo una lista de ficheros que tienen todos un path común inicial (digamos "/BACKUP/"). Como por ejemplo: /BACKUP/uno/fichero.dat /BACKUP/uno/fichero2.dat /BACKUP/dos/fichero.dat /BACKUP/dos/tres/fichero.dat /BACKUP/cuatro/cinco/fichero.dat Quería hacer una lista con todos los directorios en forma de arbol, con una estructura tal que el directorio hijo apunte al padre. La estructura en la quería meter los datos es algo así:
El primer registro del array "tabla_directorios" es el raiz o el directorio común báse. La cosa es que me estoy comiendo la cabeza para teniendo los nombres y rutas de los ficheros, como recorrerlos para que se almacenen los directorios en la estructura. No se si me explico bien, es como hacer esto con la lista de los ficheros que he puesto de ejemplo arriba (aunque esto es manualmente y no automáticamente):
Si alguien sabe como hacerlo, por favor, podéis ayudarme?, gracias. |
Supongo que primero deberías ver las funciones FindFirst y FindNext de Delphi para poder obtener información de archivos y directorios.
Luego de posicionarte en el directorio raiz (/BACKUP/) lees todos los directorios. A cada uno lo agregas a tu registro indicándole directorio_padre=0 Para cada registro que has agregado, haces lo mismo que antes, para los directorios que tiene dentro. Otra forma es utilizando recursividad: Me posiciono en el directorio raiz. Leo el primer directorio Agrego este directorio a la estructura Vuelvo a hacer esto pero teniendo en cuenta que el directorio raiz es raiz+directorio Leo el siguiente directorio |
Gracias por la respuesta.
El problema es que los datos que tengo no son indicaciones de directorios en si, es un array de strings conteniendo una lista de archivos. Si serían directorios sería facil :D Sigo trabajando en el problema :D |
Vale, ya lo he conseguido, pongo la solución por si alguien necesita también algo parecido:
La estructura que contiene la lista de directorios es:
Y la solución para extraterlo:
|
La franja horaria es GMT +2. Ahora son las 22:37:17. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi