undokumentierte Konstanten

Anfängerfragen zum Programmieren mit PureBasic.
KPA
Beiträge: 35
Registriert: 10.06.2010 22:53

undokumentierte Konstanten

Beitrag von KPA »

Per Zufall habe ich heute entdeckt, daß es neben der Möglichkeit RGB() auch einige direkte Farb Konstanten wie #RED #BLACK usw. gibt. Leider sind diese undokumentiert deshalb weiß ich nicht was alles als Farbe abgedeckt ist. Kennt jemand eine Möglichkeit, ALLE!!! PB Konstanten anschauen zu können (in der Hilfe unter PB Konstanten ist #RED etc. leider nicht zu finden)

Gibt es noch mehr Undokumentiertes bspw. Befehle ?
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: undokumentierte Konstanten

Beitrag von Josh »

werkzeuge > strukturverzeichnis > konstanten
da stehen ALLE!!! pb-konstanten
viel spass :mrgreen:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: undokumentierte Konstanten

Beitrag von STARGÅTE »

#RED, #BLACK usw. genauso wie #Null oder so sind keine PB-Konstanten, und sind auch deshalb nicht dokumentiert !
Diese Konstante stammen von Windows, in dem Fall von der Win-API die nahezu komplett in PB verfügbar ist.

Alle PB-Konstanten findest du im Konstanten-Index der PB-Hilfe.
Alle Konstanten (PB und Win) dort wo Josh schreib.

Kleiner Tip noch zu den FarbKonstanten, diese sind 24-Bit!
Soll heißen der Alpha-Wert ist 0 !
Soll heißen nutzt du diese Farben bei einem 32-Bit Image mit Alpha-Blending, ist die Farbe Transparent!
Gibt es noch mehr Undokumentiertes bspw. Befehle ?
Ja, die komplette Win-API ist in PB-Verfügbar dort aber nicht dokumentiert (weils zu viel ist).
Dazu zählen Strukture, Prozeduren, Konstanten ...

Auch von PB selber gibs ein paar Befehle die nicht dokumentiert sind, weil sie nicht "zuverlässig" sind.
EventlPalm() zb...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
KPA
Beiträge: 35
Registriert: 10.06.2010 22:53

Re: undokumentierte Konstanten

Beitrag von KPA »

Danke Leute

ihr habt wieder mal recht :oops:

Und ich habe noch was besseres gefunden. Unter Werkzeuge Farbauswahl läßt sich ja direkt eine beliebige farbe zusammenstellen und als RGB in den Quellcode einfügen. Klasse.

Bzgl. der Notwendigkeit das man alle Prozeduren die hinter dem eigentlich Prozeduraufruf folgen, vorher mit declare deklarieren muss habe ich Fred mal angeschrieben, warum das der Compiler nicht automatisch machen kann. In PowerBasic war dies möglich bzw. declare brauchte man dort nicht mehr selber eintippen, das wurde im Hintergrund vom Compiler selber erledigt wenn man kompiliert hat. Finde ich eine Erleichterung und sowas kann der PC einem doch wirklich abnehmen, ist doch reine Schreibarbeit wenn ich die Prozeduren vorne nochmal alle mittels declare auflisten muss. Hoffe das Fred sich diesem Verbesserungsvorschlag annimmt (ist er dafür überhaupt der richtige ?).
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: undokumentierte Konstanten

Beitrag von STARGÅTE »

Ein PB-user hat dazu auch mal ein Werkzeug geschrieben, was diese deklaration für dich übernimmt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: undokumentierte Konstanten

Beitrag von PureLust »

KPA hat geschrieben:Bzgl. der Notwendigkeit das man alle Prozeduren die hinter dem eigentlich Prozeduraufruf folgen, vorher mit declare deklarieren muss habe ich Fred mal angeschrieben, warum das der Compiler nicht automatisch machen kann. In PowerBasic war dies möglich bzw. declare brauchte man dort nicht mehr selber eintippen, das wurde im Hintergrund vom Compiler selber erledigt wenn man kompiliert hat.
Das wird daran liegen, dass PowerBasic ein Multi-pass-Compiler ist - und PB eben (zumindest soweit ich weiss) ein Single-pass-Compiler.

Ein Multi-pass-Compiler übersetzt den Sourcecode in mehreren Durchgängen. Somit kann er bereits im ersten Durchgang alle Deklarationen im Sourcecode ermitteln und hat diese Informationen dann in den weiteren Durchgängen zur Verfügung.
Da diese "Vorarbeit" bei einem Single-pass-Compiler nicht stattfindet (bzw. nicht stattfinden kann, da er ja nur einen einzigen Durchlauf macht), muss in einem solchen Fall halt zuerst deklariert werden.

Etwas mehr dazu findest Du z.B. HIER in deutsch, oder auch HIER, HIER oder HIER in englisch.

Das von STARGÅTE erwähnte Werkzeug fügt nun also im Grunde einen "zusätzlichen Durchlauf" ein (so wie einige andere Werkzeuge auch - z.B. die Werkzeuge zur Mehrzeilenunterstützung durch "_" am Ende der Zeile), bei dem fehlende Deklarationen festgestellt und nötigenfalls dann von diesem Werkzeug am Anfang des Codes eingefügt werden können.

Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: undokumentierte Konstanten

Beitrag von DarkDragon »

STARGÅTE hat geschrieben:#RED, #BLACK usw. genauso wie #Null oder so sind keine PB-Konstanten, und sind auch deshalb nicht dokumentiert !
Diese Konstante stammen von Windows, in dem Fall von der Win-API die nahezu komplett in PB verfügbar ist.
Nein? #Null ist nicht von der Win-API. #RED und #BLACK hab ich auch noch nie dort gesehen.

NULL ist von stddef.h und garantiert nicht von der WinAPI ;-) . Und in vielen Programmiersprachen ist NULL fest eingebettet (siehe Java z.B.). http://en.wikipedia.org/wiki/Stddef.h#NULL
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
KPA
Beiträge: 35
Registriert: 10.06.2010 22:53

Re: undokumentierte Konstanten

Beitrag von KPA »

Hi PureLust

Danke für die Erklärung. Und ist es sehr aufwändig einen Multipass Compiler zu entwickeln bzw. den Single Pass zu erweitern auf einen Multi Pass ?
Ich meine ist mir klar das es schon irgendwo dran liegt, daß PowerBasic das kann und PureBasic eben nicht. Meine Anregung war ja, macht es auch bei PureBasic, ist ne echte Erleichterung und stört den Anwender nicht sondern bringt nur Vorteile. Hat ja dann offensichtlich auch keine negativen Auswirkungen auf die Ausführungsgeschwindigkeit des fertigen Programms (lediglich beim compilieren aber das merkt man ja wohl kaum oder) muss halt nur einmal programmiert werden damit dann tausende von usern täglich in den Genuss der Arbeitserleichterung kommen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: undokumentierte Konstanten

Beitrag von DarkDragon »

KPA hat geschrieben:... keine negativen Auswirkungen ...
Doch, alle Quelltexte müssen wieder angepasst werden, die sich das zum Vorteil gemacht haben. Das soll so bleiben wie es ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: undokumentierte Konstanten

Beitrag von Nino »

KPA hat geschrieben:Bzgl. der Notwendigkeit das man alle Prozeduren die hinter dem eigentlich Prozeduraufruf folgen, vorher mit declare deklarieren muss habe ich Fred mal angeschrieben, [...] Hoffe das Fred sich diesem Verbesserungsvorschlag annimmt (ist er dafür überhaupt der richtige ?).
Es gibt extra ein Forum für Vorschläge und Wünsche. Da gehört sowas hin.
KPA hat geschrieben:Meine Anregung war ja, macht es auch bei PureBasic, ist ne echte Erleichterung und stört den Anwender nicht sondern bringt nur Vorteile.
Viele Leute schreiben die Prozeduren gleich in der richtigen Reihenfolge, und benötigen Declare daher nur selten. Ich selbst benutze Declare nur, wo es wirklich nötig ist, nämlich wenn mehrere Prozeduren sich gegenseitig rekursiv aufrufen. Der große Vorteil daran ist, dass ein Leser (das bin ich vielleicht selbst ein paar Jahre später) solcher Quelltexte viel schneller sehen kann, welche Prozeduren von welchen anderen abhängen. Und gute Lesbarkeit von Quelltexten ist ein Vorteil, dessen Bedeutung gar nicht überschätzt werden kann.

Grüße, Nino
Gesperrt