perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 17
Click for quality!




12.02.2012 / 03:34

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragPerl anonyme Subroutine
Seitenanfang
Hallo zusammen,

der folgende Code will nicht compilieren:

while ($y<11)
{

$i='1';
$x='10';
while ($i<11)
{
$W2->AddButton(

##Button Namen: FELD[ZEILE][POSITION] BSP: FELD01 == Links oben
-name => "Feld$y$i",
-text => " ", h
-picture => $bgblau,
-pos => [ $x, $z ],

$feld="Feld$y$i";
sub $feld_Click {
$W2->$feld->SetImage($bgblack);
}
);

$i=$i+1;
$x=$x+18;

};
$z=$z+20;
$y=$y+1;
}

Ich will mit Hilfer der win32::gui ein Spielfeld mit buttons erstellen und diesen Buttons jeweils die gleiche Aktion zuweisen. Um Aufwand zu sparen möchte ich das alles in einer Schleife abarbeiten. Dabei renne ich jedoch in einen Fehler, das die Sub illegal deklariert sei - wie könnte man das lösen???

Datum: 25.10.2005-09:45

Beitragre: Perl anonyme Subroutine
Seitenanfang
$feld="Feld$y$i";
sub $feld_Click {
$W2->$feld->SetImage($bgblack);
}

ich habe nie mit dem modul gearbeitet, aber das klappt nicht, weil $feld_Click kein gültiger name für eine sub ist. wenn du eine variable in dem namen verwenden willst, müsstest du mit eval arbeiten. beispiel:


eval('sub ' . $feld . '_Click {$W2->$feld->SetImage($bgblack);}');

besser wäre wahrscheinlich aber eine referenz auf die sub, aber da ich das modul nicht kenne, weiß ich nicht, ob und wie man bestimmte events zuweisen kann. poste doch mal mehr code, wenn's mit eval nicht hinhaut.

Datum: 25.10.2005-14:31

Beitragre: Perl anonyme Subroutine
Seitenanfang
Danke für den Ansatz - das geht soweit auch durhc den compiler - bringt aber den Nachteil, das die Action direkt beim Aufruf der Zeile ausgelöst wird. Der Code soll ein Feld von Buttons erzeugen - und wenn man einen button drückt soll sich die Farbe ändern. Das macht normalerweise die Sub. Nun wird Sie aber direkt ausgeführt. D.h. alle Buttons sind Gedrückt...

Problem verstanden??? Wieso führt er das eval so aus als hätte man schon geklickt???

Datum: 25.10.2005-19:01

-






-
-