Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7344[/thread]

Prozessieren...: GOTO, exec, system .. programm restarten

Leser: 1


<< >> 10 Einträge, 1 Seite
master
 2005-10-13 18:13
#58737 #58737
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Ich habe ein Tk-Programm, das nach dem klick auf einen Button sich selber neustarten soll..
oder noch schöner() an den Programm Anfang zurückspringt.
GOTO -> ja ich weiss, sollte man nicht gebrauchen... habe aber kaum eine andere Wahl...
--
ich könnte auch den gesamten hauptteil des programms in eine Sub schmeissen und dann ansprechen.. da ich aber mit Triki-artist arbeite ist das unmöglich bzw. extrem mühsam.
--

Alternativ (jedoch langsamer)
Per exec, system einen 2. prozess starten. und den eigen beenden..
Das funktioniert aber nicht... da ich ja das gleiche programm aufrufe wie gerade läuft (gibt ein error)



Wie kann ich das am besten realisieren?
Goto funktioniert nicht richtig. bzw. ich kann nur in der schleife selber springen.. aber nicht aus der schleife raus an den anfang des programms...

Gibts eine andere möglichkeit?
ps. in die schleife MUSS ich, da z.B. $mw->destroy usw. gemacht werden müssen.


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

ANFANG:
(initialisierung)
(Darstellung)

mainloop;

sub event
{
goto ANFANG; # jetzt will ich wieder "fast von vorne"
anfangen
}
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2005-10-13 18:15
#58738 #58738
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
ps. zurzeit klappts mir "exec"

ein Goto oder alternative, gefiele mir jedoch besser. als immer den ganzen code (nach einsatz von PAR) neu zu laden...
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Strat
 2005-10-13 19:22
#58739 #58739
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
aeusserst haesslich:
Code: (dl )
exec $0;

Besser die einzelnen Widgets - soweit noetig - wieder destroyen und komplett neu aufbauen.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
master
 2005-10-13 19:31
#58740 #58740
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
exec $0;

Danke sowas ähnliches hab ich gesucht :-)

Leider werden nun halt die "use Modul::mod" nochmals ausgeführt...
zudem benutze einen splash screen. der sollte eben nicht nochmals kommen. beim switchen.

Kann ich ev eine variable übergeben?
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Strat
 2005-10-13 19:33
#58741 #58741
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja; perldoc -f exec sagt dir, wie's geht...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
master
 2005-10-13 19:52
#58742 #58742
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
danke...

ps. die Widgets neuaufbauen, wäre die doppelte arbeit...
da ich sie nicht in eine sub legen kann... Triki ist schlud..
ansonsten hätte ich den gesamten "aufbau" noch in einer sub und könnte ihn brav anspringen...

das exec $0; hat mir sehr geholfen.. danke
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
lichtkind
 2005-10-13 22:12
#58743 #58743
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
andere vorschlag lass es einfach sauber beenden und spring sauber aus der mainloop raus. dann fragst du einfach nach ob ein marker gesetzt wurde und wenn ja gehst wieder rein in die mainloop, in wx wüsst ich die lösung, hab aber wenig ahnung von tk.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
ptk
 2005-10-14 04:39
#58744 #58744
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=master,13.10.2005, 17:31]
Code: (dl )
exec $0;

Danke sowas ähnliches hab ich gesucht :-)

Leider werden nun halt die "use Modul::mod" nochmals ausgeführt...
zudem benutze einen splash screen. der sollte eben nicht nochmals kommen. beim switchen.

Kann ich ev eine variable übergeben?[/quote]
use wird nur einmal ausgeführt.
ptk
 2005-10-14 04:40
#58745 #58745
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=lichtkind,13.10.2005, 20:12]andere vorschlag lass es einfach sauber beenden und spring sauber aus der mainloop raus. dann fragst du einfach nach ob ein marker gesetzt wurde und wenn ja gehst wieder rein in die mainloop, in wx wüsst ich die lösung, hab aber wenig ahnung von tk.[/quote]
Code: (dl )
1
2
3
4
5
6
 # Pseudo code
while (1) {
# GUI aufbauen
$mw->Button(-text => "Quit", -command => sub { $mw->destroy })->pack;
MainLoop;
}


Läuft ewig...
master
 2005-10-14 10:34
#58746 #58746
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,14.10.2005, 02:39]use wird nur einmal ausgeführt.[/quote]
oh *peinlich* stimmt ja...
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
<< >> 10 Einträge, 1 Seite



View all threads created 2005-10-13 18:13.