Thread Probleme bei Übergabe leerer Variablen (3 answers)
Opened by YAPD at 2017-08-16 19:21

YAPD
 2017-08-16 19:21
#187246 #187246
User since
2015-09-20
146 Artikel
BenutzerIn

user image
Hallo Leute,

leider brauche ich mal wieder Eure Unterstützung. :)
Wahrscheinlich bin ich blind und sehe das Problem,
bzw. die Stelle, an der hängt, einfach nicht :-|

Nun zum Problem :

Ich habe ein TK Fenster, das eine MListbox enthält.
In dieser sind natürlich Zeilen enthalten, die ich
über ein Popup Menu ( rechte Maustaste ) oder über
einen Button löschen kann.

Mein Problem ist der Button :

Eingebunden ist dies so :

Bei Mausklick auf die Zeile wird diese ausgewählt & das Ergebnis, also der Inhalt zurückgegeben :

Code: (dl )
$Auflistung_Benutzer_Inhalte -> bindRows( "<Button-1>" , sub { @Rueckgabe_Auflistung_Benutzer_Selektierung = &Auflistung_Benutzer_Selektierung } );


Die Auswahl der Zeile geschieht in der Sub Auflistung_Benutzer_Selektierung so :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub Auflistung_Benutzer_Selektierung {

my ( $ML_Struktur , $ML_Eintraege ) = @_;

my @Auflistung_Benutzer_Selektierung = $ML_Struktur -> curselection;

foreach( @Auflistung_Benutzer_Selektierung )
{
my @Auflistung_Benutzer_Selektierung_Details = $ML_Struktur -> getRow( $ML_Eintraege -> { -row } );
return( @Auflistung_Benutzer_Selektierung_Details );
}

}


Das Rückgabeergebnis wird dann verwendet, um die Daten für die Entfernung des Datensatzes
zu übergeben :

Code: (dl )
$Fenster_Benutzer_Verwaltung -> Button( -command => sub{ &Fenster_Entfernung_Benutzer( $Fenster_Benutzer_Verwaltung , @Rueckgabe_Auflistung_Benutzer_Selektierung ) } , 


Die Sub - Routine für die Entfernung des DS sieht so aus ( ohne MySQL ) :

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
39
40
41
42
sub Fenster_Entfernung_Benutzer {

my ( $Fenster_Benutzer_Verwaltung , @DB_Eintraege_Entfernung ) = @_; # Ermittlung des Haupt - Fensters & der DB - Einträge

# Selektierung freier Bereiche der Benutzer - Oberfläche

if ( not @DB_Eintraege_Entfernung )
{
print "Fehler bei der Erkennung des Eintrages" , "\n";
print "Fehler - Nr. : 2101" , "\n";
my $Fehler_Verarbeitung_Nummer = "2101";
# &Fehler_Verarbeitung( $Fehler_Verarbeitung_Nummer );
}

# Selektierung eines Eintrags der Benutzer - Oberfläche

if ( @DB_Eintraege_Entfernung )
{
my $DB_Entfernung_Benutzer_Fenster = $Fenster_Benutzer_Verwaltung -> Toplevel( -title => 'Entfernung des Benutzers' ); # Initialisierung des Fensters für die Benutzer - Entfernung

my $Breite = 235; # Breite des Fensters
my $Hoehe = 245; # Höhe des Fensters

$DB_Entfernung_Benutzer_Fenster -> geometry( $Breite . 'x' . $Hoehe );

# Darstellung der Labels

$DB_Entfernung_Benutzer_Fenster -> Label( -text => "Label fuer die Entfernung des" , -height => 1 , -width => 26 , -font => 'Times 10' , -relief => 'groove' , -border => 0 , -borderwidth => 0 , -anchor => "w" ) -> place( -x => 26 , -y => 28 );
$DB_Entfernung_Benutzer_Fenster -> Label( -text => "Benutzer - Eintrages : " , -height => 1 , -width => 26 , -font => 'Times 10' , -relief => 'groove' , -border => 0 , -borderwidth => 0 , -anchor => "w" ) -> place( -x => 26 , -y => 46 );

$DB_Entfernung_Benutzer_Fenster -> Label( -text => "$DB_Eintraege_Entfernung[ 1 ]" , -height => 1 , -width => 29 , -background => "white" , -relief => 'groove' , -anchor => "n" ) -> place( -x => 25 , -y => 82 );
$DB_Entfernung_Benutzer_Fenster -> Label( -text => "$DB_Eintraege_Entfernung[ 2 ]" , -height => 1 , -width => 29 , -background => "white" , -relief => 'groove' , -anchor => "n" ) -> place( -x => 25 , -y => 104 );
$DB_Entfernung_Benutzer_Fenster -> Label( -text => "$DB_Eintraege_Entfernung[ 3 ]" , -height => 1 , -width => 29 , -background => "white" , -relief => 'groove' , -anchor => "n" ) -> place( -x => 25 , -y => 126 );
$DB_Entfernung_Benutzer_Fenster -> Label( -text => "$DB_Eintraege_Entfernung[ 5 ]" , -height => 1 , -width => 29 , -background => "white" , -relief => 'groove' , -anchor => "n" ) -> place( -x => 25 , -y => 148 );
$DB_Entfernung_Benutzer_Fenster -> Label( -text => "$DB_Eintraege_Entfernung[ 6 ]" , -height => 1 , -width => 29 , -background => "white" , -relief => 'groove' , -anchor => "n" ) -> place( -x => 25 , -y => 170 );

$DB_Entfernung_Benutzer_Fenster -> Button( -text => 'OK' , -width => 13 , -command => sub { &DB_Benutzer_Entfernung( $DB_Entfernung_Benutzer_Fenster , @DB_Eintraege_Entfernung ) } ) -> place( -x => 25 , -y => 205 );
$DB_Entfernung_Benutzer_Fenster -> Button( -text => 'Ende' , -width => 13 , -command => [ $DB_Entfernung_Benutzer_Fenster => 'destroy' ] ) -> place( -x => 116 , -y => 205 );

$DB_Entfernung_Benutzer_Fenster -> MainLoop( );
}
}


Soweit so gut. Das funktioniert auch alles wunderbar, so lange ich mindestens 1 Datensatz in der MListbox habe.

SOBALD diese leer ist, also in der Datenbank kein Eintrag vorhanden ist, funktioniert die Auslösung des Fehler - Codes
2101 im Code nicht mehr, sondern er öffnet das Fenster ohne Einträge für die Löschung. In der Kommandozeile steht dann
logischerweise :

Code: (dl )
1
2
3
4
5
6
7
Use of uninitialized value $h in addition (+) at D:/Strawberry/perl/site/lib/Tk/MListBox.pm line 679.
Use of uninitialized value $y in addition (+) at D:/Strawberry/perl/site/lib/Tk/MListBox.pm line 679.
Use of uninitialized value $DB_Eintraege_Entfernung[1] in string at E:\Programmierung\Administrators\Tray.pl line 1163.
Use of uninitialized value $DB_Eintraege_Entfernung[2] in string at E:\Programmierung\Administrators\Tray.pl line 1164.
Use of uninitialized value $DB_Eintraege_Entfernung[3] in string at E:\Programmierung\Administrators\Tray.pl line 1165.
Use of uninitialized value $DB_Eintraege_Entfernung[5] in string at E:\Programmierung\Administrators\Tray.pl line 1166.
Use of uninitialized value $DB_Eintraege_Entfernung[6] in string at E:\Programmierung\Administrators\Tray.pl line 1167.


Wie verhindere ich, dass diese Werte über übergeben werden. Und worauf zum Teufel verweist der Fehler mit $x &y ? XD

Ich hoffe, ich habe Euch mein Problem verständlich gemacht &
ihr habt einen Tipp für mich.

Viele Grüße
YAPD
Yet Another Perl Developer

View full thread Probleme bei Übergabe leerer Variablen