Schrift
[thread]6991[/thread]

Curses Problem...



<< >> 4 Einträge, 1 Seite
J-jayz-Z
 2005-05-14 18:18
#54877 #54877
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi, ich habe 2 scripte, die das selbe machen _sollten_.
Wobei das eine geht und das andere(dummerweise das meiner Meinung nach elegantere...) nicht.
Also erstmal die beiden codes:
Code1:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use warnings;

use Curses;
use Curses::Widgets;
use Curses::Widgets::TextField;

my $widget;

my $mwh = new Curses;
noecho();
curs_set(0);

WIDGET:
my $widget = Curses::Widgets::TextField->new({
Y => 4,
X => 14,
COLUMNS => 20,
MAXLENGTH => 30,
FOREGROUND => 'green',
BACKGROUND => 'blue',
BORDERCOL => 'black',
BORDER => 1,
CAPTION => 'Ihre Eingabe',
CAPTIONCOL => 'yellow',
});

$widget->draw($mwh, 0);
$widget->execute($mwh);

if ($widget->getField('VALUE') eq "exit")
{
endwin();
exit 0;
} else {
goto WIDGET;
}

das geht!

Code2:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl
use strict;
use warnings;

use Curses;
use Curses::Widgets;
use Curses::Widgets::TextField;

my $widget;

my $mwh = new Curses;
noecho();
curs_set(0);

do
{
my $widget = Curses::Widgets::TextField->new({
Y => 4,
X => 14,
COLUMNS => 20,
MAXLENGTH => 30,
FOREGROUND => 'green',
BACKGROUND => 'blue',
BORDERCOL => 'black',
BORDER => 1,
CAPTION => 'Ihre Eingabe',
CAPTIONCOL => 'yellow',
});

$widget->draw($mwh, 0);
$widget->execute($mwh);

} while ($widget->getField('VALUE') ne "exit");

endwin();
exit 0;

das geht nicht...
Da bekomm ich nach dem Drücken der Eingabetaste folgendes:
Code: (dl )
Can't call method "getField" on an undefined value at ./text.pl line 16.

Kann mir jemand sagen, wieso das nicht geht, bzw. eine bessere Lösung (ohne goto) geben?
thx schonmal!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
betterworld
 2005-05-14 18:43
#54878 #54878
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Muesste das zweite Script nicht eine Warnung ausgeben, dass das zweite "my $widget" das erste ueberdeckt oder so?

Jedenfalls verliert das zweite "my $widget" am Ende Deines Blocks seine Gueltigkeit... insbesondere wird in dem while(...)-Teil wieder das zuerst definierte $widget genommen. Mach einfach aus dem zweiten "my $widget" einfach nur "$widget" und lies noch mal ein wenig ueber "my"-Variablen..
J-jayz-Z
 2005-05-14 19:53
#54879 #54879
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jo, dass wars. Danke. Da hab ich einfach nicht nachgedacht, als ich das geschrieben habe.
Eben wegen "my" hatte ich die Variable ja am script Anfang deklariert mit "my" ausserhalb der Schleife...
Jetzt gehts jedenfalls. thx!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2005-05-15 05:02
#54880 #54880
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nochwas:
Ich hab ein TextMemo, das durch eine Variable immer wieder mit neuem Text gefüllt wird. Kann ich die Länge des Textes irgendwie steuern, also das der Text automatisch nach unten rutscht, wenn mir in dem Feld drin steht, wie angezeigt werden kann? Ich seh nur einen Punkt rechts unten im Eck. Das TextMemo wird nicht "executed".
Kann mir da jemand helfen?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< >> 4 Einträge, 1 Seite



View all threads created 2005-05-14 18:18.