Página 1 de 1

Abrir Archivos con Perl/Tk

NotaPublicado: 2006-10-16 13:03 @585
por jclp77
¡¡Hola a todos!!

Necesito de su orientación ya que estoy haciendo un programilla para abrir archivos con día juliano mediante la función getOpenFile, el problema es que no todos los archivos los reconoce.. ¿¿¿alguna idea??? :D

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for (1..365) {
  push(@A,"*.$_");
}

$type=[
  ['Archivo Validado', "@A", ],
  ['All Files',        '*',  ],
];

$filename = $m->getOpenFile(
  -filetypes  => $type,
  -initialdir => Cwd::cwd(),
  -initialfile=> "",
  -title      => "Abrir Archivo"
);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2006-10-16 14:30 @646
por explorer
Por si alguien no lo sabe, getOpenFiles pertenece al paquete Tk.

Re: Abrir Archivos

NotaPublicado: 2006-10-16 14:37 @651
por kidd
jclp77 escribiste:el problema es que no todos los archivos los reconoce.. ¿¿¿alguna idea???


¿A qué te refieres cuando dices que no todos los archivos los reconoce? ¿No despliega todos los archivos? ¿Los puede abrir?


Saludos

NotaPublicado: 2006-10-16 14:51 @660
por jclp77
En realidad tenía un bug en la variable $type: estaba como "*.@A" y lo cambié por \@A y por eso podía abrir algunos archivos con extensión del día juliano, pero ahora ya "corregido" el código no puedo abrir ninguno. :(

Antes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for ('1'..'365') {
        push(@A,"$_");
}
        $type=[
     ['Archivo Validado',        "*.@A",],
     ['All Files',        '*',             ],
 ];
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ahora:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub Validado(){
for ('1'..'365') {
        push(@A,".$_");
}
        $type=[
     ['Archivo Validado',        \@A,],
     ['All Files',        '*',             ],
 ];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2006-10-16 15:05 @670
por explorer
Prueba con esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
push @A, ".$_" foreach 1..365;

$type=[
  ["Archivo Validado", [@A] ],
  ['All Files',        '*'  ],
];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
O esto, que es lo mismo, pero te ahorras una variable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$type=[
  ["Archivo Validado", [ map ".$_", 1..365 ] ],
  ['All Files',        '*'  ],
];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2006-10-16 17:01 @750
por jclp77
Gracias por la aportación explorer, pero aun así no se pudo filtrar ese tipo de archivos... :(

¿¿¿Será acaso que la propiedad -filetypes tendrá un límite???

NotaPublicado: 2006-10-16 17:10 @757
por explorer
Podría ser, claro... o ser una limitación del sistema operativo, en caso de usar una caja de diálogo del sistema.

Si estuviera en Linux, yo probaría con una extensión con comodines shell. Algo como ".{0-9}*" .

NotaPublicado: 2006-10-16 17:28 @769
por jclp77
Entonces creo que es una limitación de Windows, y no tanto del objeto.

Ojala los usuarios que van a utilizar esta aplicación tuvieran Linux... pero tienen XP. :(

NotaPublicado: 2006-10-16 17:32 @772
por explorer
Puedes atacar el problema de otra forma:
1.- Sacas un listado de los ficheros disponibles del directorio que el usuario ha elegido (es decir, primero le pedimos al usuario que elija el directorio de trabajo). Eso es fácil de hacer con opendir o con < >.
2.- Compones el listado de ficheros, ordenados, en una caja Tk donde aparecen todos (por ejemplo, una listbox o un scrollbox o algo parecido). En cuanto el usuario elija el nombre de un fichero, quitas 'tu caja de diálogo de ficheros' y abres el fichero.

Así no dependes de la limitación del sistema.

NotaPublicado: 2006-10-16 17:45 @781
por jclp77
Efectivamente, creo que es limitación del cuadro de diálogo... sólo pude leer hasta el archivo .54. :(

Pero es muy buena la sugerencia que me haces... sólo habrá que cambiar unas cuantas líneas de código para hacerlo funcional. ¡¡¡Muchas gracias!!! :D

Saludos