
Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen

Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
BindEvent() etc.
Seit der Einführung von BindEvent(), BindGadGetEvent() und BindMenuEvent() hatte ich angenommen, dass ein Ereignis nach dem Binden an eine Prozedur nicht mehr in der Ereignisschleife "erscheint", also dort nicht mehr abgefragt werden kann. Das war offenbar ein Irrtum. Leider ist das Ganze in der Hilfe nur sehr rudimentär dokumentiert.
Wie der folgende Code zeigt (getestet mit PB 5.70 unter Windows), kann anscheinend
Seit der Einführung von BindEvent(), BindGadGetEvent() und BindMenuEvent() hatte ich angenommen, dass ein Ereignis nach dem Binden an eine Prozedur nicht mehr in der Ereignisschleife "erscheint", also dort nicht mehr abgefragt werden kann. Das war offenbar ein Irrtum. Leider ist das Ganze in der Hilfe nur sehr rudimentär dokumentiert.
Wie der folgende Code zeigt (getestet mit PB 5.70 unter Windows), kann anscheinend
- eine Prozedur mit mehreren Ereignissen verbunden sein,
- ein Ereignis an mehrere Proceduren gebunden sein,
- ein Ereignis, das an eine oder mehrere Prozeduren gebunden ist, außerdem auch in der Ereignisschleife abgefragt werden.

Code: Alles auswählen
EnableExplicit
Procedure ButtonHandlerA()
Debug "Click event on button #" + EventGadget()
Debug "Handled by ButtonHandler A"
EndProcedure
Procedure ButtonHandlerB()
Debug "Click event on button #" + EventGadget()
Debug "Handled by ButtonHandler B"
EndProcedure
Define Event.i
OpenWindow(0, 100, 100, 200, 90, "Click test", #PB_Window_SystemMenu)
ButtonGadget(0, 10, 10, 180, 30, "Button #0")
ButtonGadget(1, 10, 50, 180, 30, "Button #1")
BindGadgetEvent(0, @ButtonHandlerA())
BindGadgetEvent(0, @ButtonHandlerB())
BindGadgetEvent(1, @ButtonHandlerA())
BindGadgetEvent(1, @ButtonHandlerB())
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Debug "Click event on button #" + EventGadget()
Debug "Handled by the event loop"
Debug ""
EndSelect
Until Event = #PB_Event_CloseWindow
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Naja, ist ja auch eine Universal-Funktion, wie so manch andere.
Mit zusätzlichem [EventTyp] und EventGadget() in der Procedure
ist es ja möglich, das entsprechende Gadget und dessen Eventtype
raus zu filtern. Eigentlich würde da eine einzige Procedure für alle
Gadgets reichen.
Mit zusätzlichem [EventTyp] und EventGadget() in der Procedure
ist es ja möglich, das entsprechende Gadget und dessen Eventtype
raus zu filtern. Eigentlich würde da eine einzige Procedure für alle
Gadgets reichen.
PB 6.10
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Darum geht es an dieser Stelle nicht - sondern darum, dass in der Dokumentation die Möglichkeiten, die zur Verfügung stehen, eben auch dokumentiert sind.H.Brill hat geschrieben:Naja, ist ja auch eine Universal-Funktion, wie so manch andere.
Mit zusätzlichem [EventTyp] und EventGadget() in der Procedure
ist es ja möglich, das entsprechende Gadget und dessen Eventtype
raus zu filtern. Eigentlich würde da eine einzige Procedure für alle
Gadgets reichen.
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Ach so, ich dachte, du beziehst dich auf diese Aussage hier :
sparen kann und somit die Ereignisschleife sehr schlank halten kann.
Daß man das Ereignis auch zusätzlich in der Ereignisschleife abfragen kann, ist daran geschuldet,
daß man BindEvent ja nicht unbedingt benutzen muß. Sonst wäre das für Fred ein erheblicher
Aufwand, alles auseinander zu halten. So braucht er halt nur abzufragen, ob noch eine Procedure
angekoppelt ist, und führt diese noch zusätzlich aus.
PS: Daß nicht alles super kommentiert ist, sieht man ja auch an anderen Stellen. Da hatte ich anfangs
auch meine Mühe, bis ich das ganze System einigermaßen verstanden hatte.
Ich sehe es als zusätzliches Feature an, da man damit sich die ganze EventGadget - GeschichteNino hat geschrieben:BindEvent() etc.
Wie der folgende Code zeigt (getestet mit PB 5.70 unter Windows), kann anscheinend
- eine Prozedur mit mehreren Ereignissen verbunden sein,
- ein Ereignis an mehrere Proceduren gebunden sein,
- ein Ereignis, das an eine oder mehrere Prozeduren gebunden ist, außerdem auch in der Ereignisschleife abgefragt werden.
sparen kann und somit die Ereignisschleife sehr schlank halten kann.
Daß man das Ereignis auch zusätzlich in der Ereignisschleife abfragen kann, ist daran geschuldet,
daß man BindEvent ja nicht unbedingt benutzen muß. Sonst wäre das für Fred ein erheblicher
Aufwand, alles auseinander zu halten. So braucht er halt nur abzufragen, ob noch eine Procedure
angekoppelt ist, und führt diese noch zusätzlich aus.
PS: Daß nicht alles super kommentiert ist, sieht man ja auch an anderen Stellen. Da hatte ich anfangs
auch meine Mühe, bis ich das ganze System einigermaßen verstanden hatte.
PB 6.10
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Ich beziehe mich vor allem auf den Zweck dieses Threads:H.Brill hat geschrieben:Ach so, ich dachte, du beziehst dich auf diese Aussage hier :
Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.
Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Die Select / Case Anweisung verarbeitet auch Stringwerte. Dies geht aus der aktuellen Beschreibung in der Hilfe zu Select nicht deutlich hervor. Dort ist immer nur von <Ausdruck> und von Zahlenformaten die Rede. Auch die Beispiele basieren alle nur auf Zahlen-Vergleiche. Evtl. kann man hier einen Satz einfügen, dass man auch schreiben könnte.
Kurzer Gruß
Code: Alles auswählen
Case "oben"
Das hier funktioniert einwandfrei:Die PB 5.70 Hilfe hat geschrieben:Select bietet die Möglichkeit, eine schnelle Auswahl zu treffen. Das Programm führt den <Ausdruck1> aus und behält dessen Ergebnis im Speicher. Es vergleicht dann diesen Wert mit allen Werten aus den Case <Ausdrücken>, und wenn der Wert eines angegebenen Case <Ausdrucks> 'wahr' ergibt, führt es den zugehörigen Programmcode aus und verlässt die Select Struktur. Case unterstützt mehrfache Werte und Werte-Bereiche durch die Verwendung des optionalen To Schlüsselworts (nur numerische Werte). Wenn keiner der Case Werte 'wahr' ist, dann wird der Default Code (sofern definiert) ausgeführt.
Hinweis: Select akzeptiert auch Fließkommazahlen (Floats) als <Ausdruck1>, rundet diese jedoch auf die nächstgelegene Ganzzahl (Integer) ab (Vergleiche werden nur mit Ganzzahlen durchgeführt).
Code: Alles auswählen
Value.s = "exe"
Select Value
Case "exe", "dll", "lib"
Debug "Exe, Dll oder Lib"
Default
Debug "Etwas anderes"
EndSelect
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
- stab
- Beiträge: 96
- Registriert: 24.02.2006 16:09
- Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
- Wohnort: Hardt
- Kontaktdaten:
HTML-Hilfe: ExamineDirectory
Die Prüfung, ob überhaupt und wenn ja, ein korrekter Verzeichniseintrag in meiner Datenbank existiert, wollte ich wie folgt umsetzen:
Hier das Beispiel anhand einer Liste:
Funktioniert nicht, da
auf das aktuelle Verzeichnis verweist und somit keinen Fehler ergibt.
Vielleicht sollte man das kurz wie bei den Pattern$ dokumentieren.
__________________________________________________
Beitrag verschoben
Feedback - Anwendungen>Bugs
HTML-Hilfe: ExamineDirectory>Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.
14.11.2019
RSBasic
Hier das Beispiel anhand einer Liste:
Code: Alles auswählen
; Prüfung, ob ein Verzeichniseintrag vorhanden ist
; und wenn ja, ob das Verzeichnis vorhanden ist
; funktioniert so nicht
NewList verzeichnisse.s()
AddElement(verzeichnisse())
verzeichnisse() = "c:\windows"
AddElement(verzeichnisse())
verzeichnisse() = "c:\wintows"
AddElement(verzeichnisse())
For v = 0 To 2
SelectElement(verzeichnisse(), v)
verzeichnis.s = verzeichnisse()
If ExamineDirectory(0,verzeichnis.s,"")
Debug "Listeneintrag " +Str(v)+ ": Alles klar: Verzeichnis " +verzeichnisse()+ " existiert"
Else
Debug "Listeneintrag " +Str(v)+ ": Fehler: Verzeichnis " +verzeichnisse()+ " existiert nicht"
EndIf
Next
Code: Alles auswählen
ExamineDirectory(#Verzeichnis, "", "")
Vielleicht sollte man das kurz wie bei den Pattern$ dokumentieren.
__________________________________________________
Beitrag verschoben
Feedback - Anwendungen>Bugs
HTML-Hilfe: ExamineDirectory>Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.
14.11.2019
RSBasic
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Re: HTML-Hilfe: ExamineDirectory
Das hat mit "Feedback - Anwendungen" nichts zu tun;
gehört in diese Abteilung: viewtopic.php?f=20&t=16955
gehört in diese Abteilung: viewtopic.php?f=20&t=16955
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: HTML-Hilfe: ExamineDirectory
Ausserdem nimmt man dafür FileSize()
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}