Verifique si una lista está vacía<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Esta puede ser una pregunta fácil de responder, pero lo que intento hacer es usar JMP para contar la cantidad de archivos contenidos en un directorio específico y devolver un valor de 0 si no existe ninguno o la cantidad de archivos.
Sé que al usar la función Archivos en directorio se enumerarán los archivos contenidos como una lista, pero lo que quiero hacer es convertir esto a un valor numérico:
es decir:
//set up raw dir
raw_dir = "C:\\My PhotoFilmStrips\";
_files = Files In Directory( raw_dir );
//show files
show(_files);
show( Type(_files), Is Empty(_files), Is Missing(_files), _files==Empty());
Si ejecuto el script anterior, obtengo lo siguiente con un archivo contenido en el directorio sin formato:
Tipo(_files) = "Lista";
Está vacío (_archivos) = 0;
Falta(_archivos) = {0};
_files == Vacío() = 0;
Cuando el directorio está vacío me sale:
Tipo(_files) = "Número";
Está vacío (_archivos) = 0;
Falta (_archivos) = 1;
_files == Vacío() = .;
¿Cómo puedo hacer uso de la variable Falta? Es decir, si es 1, asigne el número a una variable como tt=0 y cuando la variable Falta sea 0, entonces tt=1.
Cualquier ayuda sería apreciada
rgds
colín
Re: Comprobar si una lista está vacíaEstá perdido() en una lista vacía devolverá una lista vacía, porque está operando en cada elemento de una lista.Si la lista está vacía, no hay elementos para Está perdido() para operar, por lo que devuelve la lista vacía.Sin embargo, una mejor manera de ver esto es el siguiente ejemplo:
lista = {1,2,.,""};
falta(lst);
Re: Comprobar si una lista está vacíaEn JMP 10 y 11, un directorio vacío proporciona una lista vacía, no un valor faltante y, por lo tanto, esperaría Está perdido() para devolver 0. Curiosamente, si se aplica a una lista vacía Está perdido() devuelve una lista vacía, no 0 o 1, que es el resultado esperado de una función booleana. No estoy seguro de cómo funciona en JMP 9.
te sugiero que uses N elementos() en su lugar . Por ejemplo:
TT = ( nitems ( _archivos ) > 0 ) ;
Si usa Está perdido() puedes cambiar entre 0 y 1 con el operador NOT, es decir !Is Missing()