Página 3 de 4

Mostrar mensaje de error en ventana

NotaPublicado: 2009-05-26 07:09 @339
por wastudillo
Hola, ¿qué tal?

Gracias por el interés pero la verdad no entendí mucho lo que me dicen; además coloco GTk2::Window y me sale un error pero quisiera explicarles un poco mejor lo que necesito.

Por ejemplo, cuando estoy extrayendo un archivo por FTP y el programa no encuentra dicho archivo entonces me debe mostrar una pequeña ventana indicándome el mensaje de error (o también de confirmación) por mí especificado; el usuario solamente debe hacer clic en OK por ejemplo y se cierra la ventana de tal manera que el usuario tenga tiempo de ver el error antes de que el programa termine y se cierre automáticamente.

No sé si será mucho pedir pero aquí les muestro un pedazo del programa y dónde necesito que muestre la ventana:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $FTP = Net::FTP->new($SERVER) or die ("No se puede abrir la conexión");# aquí también
$FTP->login($name,$pass);
$FTP->binary ();
$FTP->hash ();
my @archivos = $FTP->ls();
foreach my $archivo (@archivos){
    $FTP->get($archivo);
    print "Archivo $archivo copiado\n"; # este es el mensaje
}
$FTP->quit();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Muchas gracias.

NotaPublicado: 2009-05-26 19:19 @846
por creating021
proxy_lainux escribiste:¿Por qué no intentas hacer eso haciendo una ventana con Gtk, por ejemplo?

Porque instalar GTK2 requiere instalar Gtk+, Pango, Glib, Cairo y otras cosas... que Windows no trae, yo usaría otra librería como la que dice explorer (Win32::GUI) o Prima, ya que tiene menos dependencias.
wastudillo escribiste:coloco GTk2::Window y me sale un error

GTk2 != GTK2
Suponiendo que ese es el error, ya que no lo comentas.

Bien, el asunto es que sí se puede hacer, y es muy simple:
Primero creamos una función que imprima el diálogo, ésta deberá recibir un argumento... el mensaje (de error o de confirmación).


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# use Prima qw(Application MsgBox);
sub MiDialogo {
    my $msg = shift; # argumento.
    Prima::MsgBox::message($msg, mb::Ok);
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Luego, en el código que tenías, agregamos algo.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $FTP = Net::FTP->new($SERVER) or die ("No se puede abrir la conexión");# aquí también
$FTP->login($name,$pass);
$FTP->binary ();
$FTP->hash ();
my @archivos = $FTP->ls();
foreach my $archivo (@archivos){
    $FTP->get($archivo) or do {
        MiDialogo( $FTP->message() );
        next; # Seguimos con el siguiente elemento del bucle
    };
    MiDialogo( "Archivo $archivo copiado" );
    print "Archivo $archivo copiado\n"; # este es el mensaje
}
$FTP->quit();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Es una forma simple y rápida... que se puede mejorar :wink:

Mostrar mensaje confirmación o error en una ventana

NotaPublicado: 2009-05-27 06:38 @318
por wastudillo
Buenos días.

Les comento que me sale el siguiente error y no pude ver el funcionamiento del código, y otra cosa: no sé si lo estoy haciendo bien. En el lugar donde necesito que me salga el mensaje simplemente coloco algo como esto MiDialogo ("mensaje de error o confirmacion"); ¿O requiere de algo más?

Este es el mensaje de error:

Código: Seleccionar todo
Can't locate Prima.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at extraer_archivos.pl line 10.
BEGIN failed--compilation aborted at extraer_archivos.pl line 10.


Muchas gracias por la ayuda.

NotaPublicado: 2009-05-27 06:49 @325
por explorer
El error dice que Perl no es capaz de encontrar el módulo Prima, así que entonces suponemos que no está instalado.

Módulo prima

NotaPublicado: 2009-05-27 13:32 @606
por wastudillo
Perdón por la ignorancia, ¿cómo lo instalo?

NotaPublicado: 2009-05-27 13:44 @614
por explorer
Depende del sistema operativo y de la distribución Perl que estés usando.

instalacion modulo prima

NotaPublicado: 2009-05-28 06:29 @312
por wastudillo
Que tal buenos dias: ingreso a la pagina del modulo prima y descargo el archivo .gz pero no encuentro como instalarlo, mi sistema operativo es windows xp y perl es la 2.5.

Gracias

NotaPublicado: 2009-05-28 08:35 @399
por explorer
Pero no nos has dicho qué distribución usas.

Si estás en Windows, quizás estés usando la distribución Perl de la empresa ActiveState.

Aquí tienes un hilo que te explica cómo instalar módulos con PPM.

Instalar módulos en Perl

NotaPublicado: 2009-05-28 16:45 @740
por wastudillo
Perdón, tiene razón. La versión es ActiveState ActivePerl 5.6 pero lo que sucede es que no tengo una conexión a Internet porque es un aplicativo que estoy desarrollando en la empresa que trabajo y me toca hacerlo de esta manera. Entonces si tengo que instalarlo debo de hacerlo de una manera que no requiera Internet.

NotaPublicado: 2009-05-28 17:02 @751
por explorer
Ese ActivePerl es del siglo pasado.

¿Una empresa que no permite bajar módulos Perl desde Internet? Entonces tampoco permitirá usar librerías Java, C, o algo peor, ni siquiera arrancar PHP.

Estás perdiendo el tiempo ahí. Tu carrera profesional está sufriendo un retraso.

Si aún persistes en vivir de esa manera, aquí tienes un método para hacerlo.

Una empresa que no tiene conexión a Internet está en clara desventaja frente a la competencia. A esa empresa le queda poco tiempo de vida. Empieza a buscar otra empresa...

deprisa...

empieza a buscarla YA.