|
Titel: Überlauf bei verschachtelten Actions ? Beitrag von: GewinnerTyp am 20.02.2004, 13:40:43 Hi,
habe mal eine Frage zu Verschachtelungen von Actions: Angenommen aus der start-Action wird u.a. in eine Action xyz verzweigt. Diese Action wiederrum enthält (u.a.) den erneuten Aufruf der start Action (DO start). Bestünde die Gefahr eines "Überlaufs" ? Oder hat die start Action bezüglich des "merkens" von Rücksprungsadressen intern eine besondere Bedeutung ? Danke ! Gruß GewinnerTyp Titel: Re: Überlauf bei verschachtelten Actions ? Beitrag von: SLC am 20.02.2004, 20:15:35 Huhu!
Die ACTION start hat diesbezüglich keine Sonderbedeutung, allerdings sehe ich keinen Grund, sie jemals direkt aufzurufen. Indirekt wird sie durch MASTERRESET aufgerufen... Rekursive Aufrufe sind grundsätzlich in vollem Umfang möglich, sie belasten halt nur den Call-Stack, der begrenzt ist (wenn auch großzügig) und führen auch einmal zu einem OVERFLOW, dessen Reaktion Du mit "OVERFLOW: ..." und "WHEN ERROR DO ..." steuern kannst (in gewissen Grenzen)... LOCAL-Variablen werden bei rekursiven Aufrufen übrigens auch voll unterstüzt, das heißt, bei jedem Aufruf wird eine neue Instanz einer lokalen Variable angelegt, die unabhängig ist. Grüße, SLC Titel: Re: Überlauf bei verschachtelten Actions ? Beitrag von: GewinnerTyp am 21.02.2004, 13:11:03 Hi SLC !
jow, auf MASTERRESET bin ich dann auch gekommen. thx ! :) OVERFLOW und ERROR setzte ich sowieso immer. Muss man LOCAL Variablen verschiedener Instanzen unterschiedlich aufrufen oder gilt gerade die der jeweiligen Instanz ? Ich vermute mal ja... teste es aber noch... ;D (jedenfalls gut zu wissen) Mein Problem: Möchte auf Eingaben innerhalb einer ACTION reagieren (also eine Tastatureingabe abfragen, die normalerweise mit WHEN KEYWORD bla FROM * DO xyz). Funzt abba net. :( Er durchrennt die WHILE schleife, reagiert aber nicht mehr auf WHEN KEYWORD... Auch im DEBUGGING kann man nicht erkennen warum net... Zitat ACTION funztnet SET taste 0 WHILE [taste] == 0 DO BEGIN WHEN KEYWORD würfeln FROM [WHO] DO würfeln WHEN KEYWORD stop FROM * DO ende END END In der ACTION würfeln setze ich dann natürlich taste auf 1 any ideas ? :) Gruß GewinnerTyp Titel: Re: Überlauf bei verschachtelten Actions ? Beitrag von: SLC am 21.02.2004, 15:49:19 Huhu!
Alle "WHEN"-Statements "tun erstmal nichts"! Sie mehrfach zu setzen, macht auch wenig Sinn. Was passiert z.B. bei "WHEN KEYWORD ..."? Es wird ein "Trigger" gesetzt, also eine Reaktionsfunktion auf ein Ereignis. Diese Reaktionsfunktion (ACTION) wird nicht sofort ausgelöst, sondern (unabhängig vom Programmablauf der aktuellen ACTION) dann, wenn das Ereignis mal auftritt (und selbst dann wird die aktuelle ACTION und ggfs. vorher auftretende Reaktionen noch vorher abgearbeitet). Die Reaktionsfunktion wird so lange auf das angegebene Ereignis reagieren, bis mal "IGNORE KEYWORD" mit demselben Keyword dahinter oder "IGNOREALL KEYWORD" aufgerufen wird! Beispiel für eine Anwendung von WHEN KEYWORD: Code: ACTION start WHOIS STARTER SET starter [WHO] WHEN KEYWORD huhu FROM [starter] DO reaktion END ACTION reaktion >> Grüß Dich, großer Meister! END Grüße, SLC Titel: Re: Überlauf bei verschachtelten Actions ? Beitrag von: GewinnerTyp am 21.02.2004, 18:00:02 Hi SLC,
ich merk' schon, ich muss meinen Programmierstil wohl völlig umkrempeln... ;D Zitat selbst dann wird die aktuelle ACTION und ggfs. vorher auftretende Reaktionen noch vorher abgearbeitet). ...DER entscheidende Hinweis ! DANKE ! "großer Meister" ! ;D Gruß GewinnerTyp |