• Publicidad

popup: ¿cómo sigo?

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

popup: ¿cómo sigo?

Notapor Gisely » 2008-02-19 14:19 @638

Estoy trabajando con Perl en modo consola, tengo un mini programita con el que tiro un listado de nombres desde una tabla de una bases de datos MySQL. Permito la selección de un nombre y lo último que muestro usando una ventanita (popuplabel) es el nombre seleccionado.
O sea que en pantalla me queda, el listado de fondo más la ventanita encima indicando el nombre seleccionado.
Mi problema es que no encontré aún una forma de limpiar la pantalla para poder seguir ahí mismo. O salgo perfectamente luego de un enter u obtengo errores, lo último que probé fue un clrscr() que también puede que lo esté usando mal.
Gisely
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-02-18 16:24 @725

Publicidad

Notapor Norther » 2008-02-19 17:07 @754

clrscr() es de Ansi C, si estás en Linux prueba system("clear"), y si estas en Windows system("cls")
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor Gisely » 2008-02-19 18:19 @804

Estoy usando Linux y probé con el system("clear") pero no pasa nada, directamente sale del programita.
Gisely
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-02-18 16:24 @725

Notapor explorer » 2008-02-20 13:27 @602

Yo es que aún no tengo claro qué es lo que quieres hacer...

¿Puedes explicarlo de otra manera?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Gisely » 2008-02-20 18:00 @791

ups :? recién comienzo y me complico demasiado para explicar lo que quiero hacer. Simplemente quiero lograr limpiar la pantalla para poder continuar trabajando dentro de este mismo programita.

Por ejemplo me pasa que si yo luego de mostrar la lista de nombres quiero imprimir algo en pantalla el programa se me cuelga, al igual que si quiero permitir la entrada de datos por parte del operador.

Otra cosa que puedo hacer si no queda clara mi explicación es copiar el código para que veas lo que estoy haciendo.
Gisely
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-02-18 16:24 @725

Notapor explorer » 2008-02-20 18:54 @829

Pues casi mejor que sí...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Gisely » 2008-02-25 07:34 @356

Aquí va el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Curses;
use DBI;
use Cdk;
initscr();
Cdk::init();
raw();
keypad(1);
getmaxyx($nRows, $nCols);
my $dsn = 'DBI:mysql:db:localhost';
my $db_user_name = 'user';
my $db_password = 'pass';
my ($id, $password);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
%listado;
%liscuit;
@aArticulos;

my $query = "SELECT IdArticulo,ccArticulo FROM Articulos";

my $sth = $dbh->prepare($query);

$sth->execute();

while( ( $iArticulo, $cArticulo ) = $sth->fetchrow_array()) {
        $listado{$cArticulo}=$iArticulo;

        push @aArticulos, $cArticulo;
}
$sth->finish();
$dbh->disconnect();

my $alphalist = new Cdk::Alphalist ('Label' => "Articulo: ",
                                    'Filler' => "</R/24>_",
                                    'Height' => 20,
                                    'Width' => 50,
                                    'List' => \@aArticulos );

$alphalist->set ('BoxAttribute' => "</R>");

my $cArticulo = $alphalist->activate();

if (! defined $cArticulo) {
        popupLabel (["<C>No se hizo una seleccion"]);
}else{
        popupLabel (["<C>Selecciono ($cArticulo) - Id. ".$listado{$cArticulo}]);
        $iArticulo=$listado{$cArticulo};
};
       
Cdk::end();
getch();
endwin();
 
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Como ya les comente probé a usar el system("clear") antes de finalizar y no pasa nada.
Gisely
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-02-18 16:24 @725

Notapor explorer » 2008-02-25 08:41 @403

Pues viendo la API de Curses... sería poner clear(); justo antes del endwin();. Eso hará que se limpie la pantalla y que quede el cursor en la parte superior.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados