Fehler bei erweiterten Gadgets...

Anfängerfragen zum Programmieren mit PureBasic.
SMaag
Beiträge: 184
Registriert: 08.05.2022 12:58

Re: Fehler bei erweiterten Gadgets...

Beitrag von SMaag »

Code: Alles auswählen

If Gadget = #PB_Any
  Gadget = CheckBoxGadget(#PB_Any, x, y, width, height, Text$, Flags)
Else
  CheckBoxGadget(Gadget, x, y, width, height, Text$, Flags)
EndIf
If Gadget = #PB_Any
das ist völlig überflüssung und kann nie ausgeführt werden! Ausser du übergibst
fälschlich -1 an deine Funktion. Das ist aber dann ein Fehler des Programmiers und nur
einer von vielen Möglichen. Das zu prüfen bringt nichts.

Um zu prüfen, ob das eine gülte GadgetNummer ist, geht nur IsGadget()

Noche eine Anmerkung:
CheckGadgetEx_
den Unterstrich würde ich so nicht machen, da Funktionen gefolgt von einem Unterstrich
von PB für direkt integrierte Windows-APIs verwendet wird. Das suggeriert es ist eine WindowsAPI-Funktion.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Fehler bei erweiterten Gadgets...

Beitrag von Macros »

Es scheint du hast nicht den ganzen Beitrag gelesen SMaag.

Ghosty1967 zielt mit seiner Funktion darauf ab die PB Gadgetfunktionen mit zusätzlichen Parametern für Farbe und Schriftart zu erweitern.
Natürlich muss er dann auch #PB_Any als Parameter erlauben und entsprechend verarbeiten. Das if ist somit keineswegs überflüssig, sondern nötig.

Die Überschneidung mit der API Bezeichnung stimmt. ist eine Stilfrage. Ich denke man kann Funktionen so bezeichnen, wenn man keine API Funktionen im Code verwendet und somit ein Leser nicht verwirrt ist. (Immer dran denken, später ist mans selbst mal unwissender Leser, wenn man das Projekt nach Jahren ausgräbt!) Wobei ich persönlich es auch nicht machen würde.
Bild
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Fehler bei erweiterten Gadgets...

Beitrag von TroaX »

Ghosty1967 zielt mit seiner Funktion darauf ab die PB Gadgetfunktionen mit zusätzlichen Parametern für Farbe und Schriftart zu erweitern.
Natürlich muss er dann auch #PB_Any als Parameter erlauben und entsprechend verarbeiten. Das if ist somit keineswegs überflüssig, sondern nötig.
Ist dem wirklich so? Wäre mal interessant zu wissen, ob die Prozedur CheckBoxGadget bei Erfolg die übergebene Gadgetnummer zurückliefert oder eher das Windows-Interne Handle. Denn ich glaube nicht, das die Prozedur bei Erfolg noch eine zufällig generierte Nummer erzeugt, die es zurückliefern kann, obwohl eine passende Nummer schon übergeben wurde. Soweit ich weiß liefert die Prozedur bei #PB_Any eine generierte ID zurück und bei Vorgabe einer ID einfach nochmal die selbe. Und dann ist es schon richtig, das die If-Abfrage sinnlos ist. Denn schließlich prüft CheckBoxGadget ja schon selbst auf #PB_Any ab.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Fehler bei erweiterten Gadgets...

Beitrag von Macros »

Nein, wenn man eine eigene ID vergibt, dann gibt CheckBoxGadget (wie alle anderen Funktionen) nicht diese bei Erfolg zurück.
Einfachstes Gegenargument ohne Test: Man kann Gadgets mit der Nummer 0 erstellen, jedoch ist ein Rückgabewert von 0 ein Fehler bei der Erstellung.

Tatsächlich wird die GadgetsID, also das Handle zurückgegeben. ABER: Das ist nicht dokumentiert, also sollte man nie Code drauf aufbauen, denn es kann sich jederzeit ändern. Und wenn man #PB_Any übergibt stimmt es nicht mehr. Lieber die ID dann mit GadgetID(wert_den_die_gadgetfunktion_zurueckgab) ermitteln. Beim Programmieren zählt Glauben wenig, die Dokumentation und Tests dafür viel.

Bitte testet doch kurz Ideen bevor sie als Aussagen ins Forum kommen, das ist flotter als einen Beitrag zu verfassen.

Code: Alles auswählen

OpenWindow(1,0,0,800,600,"ID Test")
returnvalue= CheckBoxGadget(1,0,0,100,20,"Box1")
returnvalue_any= CheckBoxGadget(#PB_Any,0,30,100,20,"Box2")

Debug returnvalue
Debug GadgetID(1)
Debug returnvalue_any
Debug GadgetID(returnvalue_any)
Zuletzt geändert von Macros am 22.09.2023 13:11, insgesamt 1-mal geändert.
Bild
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Fehler bei erweiterten Gadgets...

Beitrag von TroaX »

Macros hat geschrieben: 22.09.2023 11:26Bitte testet doch kurz Ideen bevor sie als Aussagen in Forum kommen, das ist flotter als einen Beitrag zu verfassen.
Na da bin ich ja froh, das ich keine Aussage getroffen habe. :lol:
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
SMaag
Beiträge: 184
Registriert: 08.05.2022 12:58

Re: Fehler bei erweiterten Gadgets...

Beitrag von SMaag »

Macros hat geschrieben: 22.09.2023 09:38 Es scheint du hast nicht den ganzen Beitrag gelesen SMaag.

Ghosty1967 zielt mit seiner Funktion darauf ab die PB Gadgetfunktionen mit zusätzlichen Parametern für Farbe und Schriftart zu erweitern.
Natürlich muss er dann auch #PB_Any als Parameter erlauben und entsprechend verarbeiten. Das if ist somit keineswegs überflüssig, sondern nötig.
Danke für den Hinweis. Gelesen schon, aber erst jetzt komplett verstanden.
SMaag
Beiträge: 184
Registriert: 08.05.2022 12:58

Re: Fehler bei erweiterten Gadgets...

Beitrag von SMaag »

Noch etwas!
Hat schon mal jemand darüber nachgedacht oder umgesetzt, alle Gadgets in OOP Klassen zu kapseln.

Damit könnte man Standardvorgaben automatisch auf alle Gadgets umsetzen und man könnte eine Gadget-Auflistung implementieren,
Mit der man mit ForEach druch alle Gadgets laufen kann. Sonderfunktionen vor allem für Windows, an die man nur mit Sendmessage kommt
könnte man fest implementieren.

Fontumschaltungen usw. könnte man realtiv einfach auf alle Gadgets umlegen.

Mit Vererbung könnte man dann auch relativ einfach individuelle Methoden hinzufügen.
Ein automatisches andocken z.B., so dass bei einem Resize nur das Master-Gadget verschoben werden muss!
Benutzeravatar
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: Fehler bei erweiterten Gadgets...

Beitrag von HeX0R »

Geh mir weg mit OOP, aber tu Dir keinen Zwang an :lol:
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Fehler bei erweiterten Gadgets...

Beitrag von RSBasic »

Was hast du gegen OOP?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Fehler bei erweiterten Gadgets...

Beitrag von Bisonte »

RSBasic hat geschrieben: 22.09.2023 17:50 Was hast du gegen OOP?
Nicht wirklich viel.... Granaten, Gewehre, Pistolen, Hundestaffeln... ich sag ja, nich viel :mrgreen:
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten