Variable GadgetList und variable Events ?
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Variable GadgetList und variable Events ?
Aber man kann natürlich jederzeit mit einem einfachen 'ProcedureReturn' vorzeitig aus einer Event-Procedure heraus springen.
- Vera
- Beiträge: 928
- Registriert: 18.03.2009 14:47
- Computerausstattung: Win XP SP2, Suse 11.1
- Wohnort: Essen
Re: Variable GadgetList und variable Events ?
Hi matbal,
super vielen Dank für die 3 Varianten
Eine prima Basis diese drei Speichermethoden im Vergleich zu verstehen.
Hallo Thomas,
das ist wirklich gut zu wissen, das jedwede EventProcedure (außer bei WIN-Callback) keinen vorzeitigen Abbruch der Procedure erlaubt.
Dann brauche ich auch nicht weiter zu versuchen das auszuknobeln.
Habe auch die Hilfe nochmals gründlich danach durchsucht, jedoch nirgends einen einzigen Hinweis dazu finden können. Vielleicht ist er irgendwo impliziet versteckt. Ich halte die Augen offen.
Dank auch für den zweiten Video-Link
Ich hatte schon erkannt, dass die Playlist angesteuert war, aber YT läuft schon fast ein Jahr nicht mehr bei mir und alle meine Scripts der letzten Jahre, mit denen ich das umgehen konnte, sind zur Zeit noch im Datennirvana meines vor Wochen kaputt gegangenen Rechners. Mit den direkten Links kann ich die Vids behelfsmäßig runterladen.
btw: wer Lust auf ein paar Lacher hat, kann ja mal dieses variable Schätzchen von 2007 durchlesen
super vielen Dank für die 3 Varianten

Eine prima Basis diese drei Speichermethoden im Vergleich zu verstehen.
Der entscheidende Zwischenschritt auf den ich so schnell nicht gekommen wär.matbal hat geschrieben:mußt du die Nummern der mit PBAny erstellten Buttons irgendwo zwischenspeichern.
Hallo Thomas,
das ist wirklich gut zu wissen, das jedwede EventProcedure (außer bei WIN-Callback) keinen vorzeitigen Abbruch der Procedure erlaubt.
Dann brauche ich auch nicht weiter zu versuchen das auszuknobeln.
Habe auch die Hilfe nochmals gründlich danach durchsucht, jedoch nirgends einen einzigen Hinweis dazu finden können. Vielleicht ist er irgendwo impliziet versteckt. Ich halte die Augen offen.
Ja, das hatte ich auch gehofft, aber keine Variation in meinem zweiten Code (von Kiffi) hat die Procedure abgebrochen und sie also immer komplett durchlaufen.NicTheQuick hat geschrieben:Aber man kann natürlich jederzeit mit einem einfachen 'ProcedureReturn' vorzeitig aus einer Event-Procedure heraus springen.
Dank auch für den zweiten Video-Link

Ich hatte schon erkannt, dass die Playlist angesteuert war, aber YT läuft schon fast ein Jahr nicht mehr bei mir und alle meine Scripts der letzten Jahre, mit denen ich das umgehen konnte, sind zur Zeit noch im Datennirvana meines vor Wochen kaputt gegangenen Rechners. Mit den direkten Links kann ich die Vids behelfsmäßig runterladen.
btw: wer Lust auf ein paar Lacher hat, kann ja mal dieses variable Schätzchen von 2007 durchlesen

°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Re: Variable GadgetList und variable Events ?
Woraus schließt du das?Vera hat geschrieben:Ja, das hatte ich auch gehofft, aber keine Variation in meinem zweiten Code (von Kiffi) hat die Procedure abgebrochen und sie also immer komplett durchlaufen.
Schreibe einfach eine Debug-Anweisung vor jedem "Ausgang" der Procedure - das heißt, vor den beiden ProcedureReturns und vor EndProcedure. Die Prozedure erreicht nie das Ende, sondern wird immer vorzeitig verlassen.
- Vera
- Beiträge: 928
- Registriert: 18.03.2009 14:47
- Computerausstattung: Win XP SP2, Suse 11.1
- Wohnort: Essen
Re: Variable GadgetList und variable Events ?
Jau - genau das habe ich ja auch schon gemacht, nachdem der erste Versuch mittels:matbal hat geschrieben:Schreibe einfach eine Debug-Anweisung vor jedem "Ausgang" der Procedure - das heißt, vor den beiden ProcedureReturns und vor EndProcedure. Die Prozedure erreicht nie das Ende, sondern wird immer vorzeitig verlassen.
Code: Alles auswählen
...
If GadgetData = 0 : ProcedureReturn : EndIf
ProcedureReturn GadgetData
EndProcedure
... und den Testcode dazu hatte ich hier oben gepostet.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Re: Variable GadgetList und variable Events ?
Welchen Wert soll die Prozedure denn zurückgegeben werden, wenn du keinen Rückgabewert angibst?
Es wird einfach NULL zurückgegeben.
Wo die Procedure verlassen wird, kannst du in der Procedure besser sehen:Im Debugger erscheint entweder "A" oder "B", aber nie "Ende".
Es wird einfach NULL zurückgegeben.
Wo die Procedure verlassen wird, kannst du in der Procedure besser sehen:
Code: Alles auswählen
Procedure ButtonEvent()
Protected EventGadget = EventGadget()
Protected GadgetData = GetGadgetData(EventGadget)
;Debug "Event: Button " + Str(GadgetData)
If GadgetData = 0
Debug "GD = "+ Str(GadgetData) ; obwohl 0 eindeutig erkannt wird, wird die Procedure hier nicht abgebrochen
Debug "A"
ProcedureReturn ; #False
;EndIf ;
ElseIf GadgetData > 0
GadgetDati = GadgetData
Debug "B"
ProcedureReturn GadgetDati
EndIf
Debug "Ende"
EndProcedure
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Variable GadgetList und variable Events ?
Ihr wisst aber schon noch, dass wir gerade über Event-Procedures reden, oder? Da gibt es keine Rückgabewerte. Aber kann sehr wohl die Funktion vorzeitig verlassen.
Re: Variable GadgetList und variable Events ?
Dem füge ich noch ein Beispiel-Code hinzu, damit es nun für alle klar wird:NicTheQuick hat geschrieben:Aber kann sehr wohl die Funktion vorzeitig verlassen.
Code: Alles auswählen
Procedure ButtonHandler()
Debug "Button click event on gadget #" + EventGadget()
ProcedureReturn
Debug "Das wird nie ausgegeben"
EndProcedure
OpenWindow(0, 100, 100, 200, 50, "Click test", #PB_Window_SystemMenu)
ButtonGadget(0, 10, 10, 180, 30, "Click me")
BindGadgetEvent(0, @ButtonHandler())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- Vera
- Beiträge: 928
- Registriert: 18.03.2009 14:47
- Computerausstattung: Win XP SP2, Suse 11.1
- Wohnort: Essen
Re: Variable GadgetList und variable Events ?
Wenn eine Event-Procedure keine Rückgabewerte hat, wieso hoffe ich dann überhaupt darauf, dass eine EventCallback-Anfrage mir ein Ergebnis liefert?NicTheQuick hat geschrieben:Ihr wisst aber schon noch, dass wir gerade über Event-Procedures reden, oder? Da gibt es keine Rückgabewerte.
Wieso bekomme ich trotzdem Ergebnisse?
Und woher kommen die her? Wer oder was schickt die wann?
Ich sehe doch an den ganzen Debugs, das egal was ich mache die Anfrage ein Ergebnis erhält. Woher kommt das, wenn nicht aus der Procedure? Und warum kann ich dann darin nicht sagen, welche Ergebnisse ich zurück bekommen möchte und welche nicht?
Wenn doch die Procedure vorzeitig abgebrochen wird, WARUM wird dann, die erst danach folgende Rückgabe ausgeführt?
Es kann doch nicht beides gleichzeitig gültig sein:

Mein Beispiel oben zeigt das deutlich, der ScrollareaEvent wird unter allen Umständen zurück geliefert, und läßt sich weder abfangen noch ausfiltern.es gibt keinen Rückgabewert = die Procedure gibt ein Ergebnis zurück
die Procedure kann teminiert werden = eine danach folgende Rückgabe wird trotzdem ausgeführt
Ich kann kein Video von einem Live-Debugging drehen, aber ihr müßtet doch via Debugger das Gleiche sehen wie ich.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Variable GadgetList und variable Events ?
Code: Alles auswählen
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 1
a = WhatEver()
EndSelect
EndSelect
ForEver
Hier kann nirgends ein Wert zurückgegeben werden. Zwar gibt WhatEver() was
an a zurück, aber nicht ans EventLoop! Ausserdem gehört WhatEver() auch nicht
unmittelbar zum EventLoop. Der Wert kann also auch nur innerhalb des Case Zweigs
ausgewertet werden, aber ist keine rückgabe des EventLoops.
Ist vielleicht schwer zu erklären, aber garantiert nicht schwer zu verstehen

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Vera
- Beiträge: 928
- Registriert: 18.03.2009 14:47
- Computerausstattung: Win XP SP2, Suse 11.1
- Wohnort: Essen
Re: Variable GadgetList und variable Events ?
Es ist zum Verzweifeln - falls die Anwort an mich gehen soll Thomas.
Hier geht es doch, um die Rückgabe von der Procedure an die Anfrage aus dem EventLoop.
Ebenso ist ja der CASE im meinem Beispiel unbekannt - es geht ja genau darum, diesen via Procedure zu indentifizieren UND auszufiltern.
Hier geht es doch, um die Rückgabe von der Procedure an die Anfrage aus dem EventLoop.
Ebenso ist ja der CASE im meinem Beispiel unbekannt - es geht ja genau darum, diesen via Procedure zu indentifizieren UND auszufiltern.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\