Deutsch
Forum

Konstanten mit DEF

 

H.Brill
Normalerweise sind ja Konstanten, die mit DEF definiert wurden,
im späteren Programmlauf unveränderlich. Das ist ja auch der
Sinn davon.

Daß es dennoch anders geht, beweisen die Escpae-Sequenzen
und die eingebetteten Variablen.
Declare String Titel, Name, Long Alter
Titel = "Herr "
Name = "Müller"
Alter = 50
DEF $Text "Hallo, \:Titel;\:name;, wie geht es Ihnen ?\nSie sind \:Alter; Jahre alt.\n"
Cls
Print $Text
Print "Weiter mit Taste...\n"
WaitKey
Titel = "Frau "
Name = "Maierbär"
Alter = 80
Print $Text
WaitKey

Ist vielleicht für etwas nützlich.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
08.05.2023  
 




Matthias
Arlt
Dieses Verhalten gibt es aber offenbar erst ab X3. Vorher wurde eine Stringkonstante auch nur als Literal behandelt, so wie es der Logik entspricht.
Immerhin gut zu wissen...
 
Alle Sprachen
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
08.05.2023  
 




H.Brill
Vor allem die engebetteten Variablen machen es ja so interessant.
Mal sehen, ob ich eine gute, sinnvolle Verwendung dafür finde.

Vorstellen könnte ich mir solche Adress-Etiketten, wo der Absender
fest ist und die Kundenadressen aus einer DB gezogen werden.

Zum Ausdruck bräuchte man nur eine Stringkonstante. Die Adressfelder
aus der DB speichert man sowieso meistens in normalen Variablen (zur Weiterverarbeitung) zwischen. Sobald man die Adressteile in den Variablen
hat, ist auch die Stringkonstante aktuell, bzw. mit der aktuellen Adresse
versehen.

Ich glaube, da finden sich bestimmt noch andere Einsatzgebiete.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
08.05.2023  
 




Matthias
Arlt
Nun ja...dann wohl eher 'kosmetisch' relevant. Aber warum nicht...

Letztendlich verhält sich eine Stringkonstante ja nicht anders als eine global definierte Stringvariable, die im Programmablauf unverändert bleibt. Und hierin besteht auch der einzige Vorteil der Konstante gegenüber der Variablen, nämlich in der globalen Sichtbarkeit und dem festen Inhalt, eben einem unveränderten Literal.

Daraus könnte theoretisch ein marginaler Geschwindigkeitsvorteil resultieren. Ob das in einem 'durchschnittlichen' Programm tatsächlich messbar ist, habe ich allerdings nie getestet.

Wenn ich nun aber statt einem konstanten Literal eine Mischung aus veränderbaren Teilen zuweise, bleibt nur die globale Sichtbarkeit. Die erreiche ich aber ebenso mit einer global deklarierten Variable.
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
08.05.2023  
 




H.Brill
Im Grunde genommen ist es ja auch nur eine Spielerei von mir.
Da hast du natürlich Recht, daß man das auch mit normalen
Variablen erledigen kann.

Und einen Geschwindigkeitsvorteil sehe ich auch nicht wirklich,
obwohl nach RGH's Zitat in der Hilfe :


Die Verwendung von Konstanten kann ein Programm übersichtlicher und ggf. auch schneller machen, da auf Konstanten deutlich schneller zugegriffen wird, als auf Variablen.


Mag sein, wenn man eine riesige Schleife mit zig tausenden Durchläufen
hat, daß man da etwas schneller unterwegs ist. Das ist aber auch dem
Interpreter geschuldet. Irgendwo in der Hilfe hatte ich mal gelesen, daß
der alle 20 Zeilen eine 'Pause' oder was immer, macht.

Das einzige, was ich mal festgestellt habe : Wenn man große Datenmengen
in einer sehr großen Schleife abarbeiten muß, kann es vorteilhaft sein,
RGH's interne Schleifen (z.B. MoveListProc) zu verwenden. Mit den
...ToList-Befehlen kann man ja in dieser Proc machen, was man will, d.h.
ma braucht ja nicht unbedingt die interne Listboxliste zu benutzen.

Da konnte ich schon mal einen Geschwindigkeitsvorteil feststellen.
Aber meistens schreiben wir ja, wie du schon sagtest, 'durchschnittliche' Programme, wo das dann nicht auffällt.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
09.05.2023  
 




Matthias
Arlt
Na wie auch immer, schaden wird es nicht. Und sei es auch nur, daß es vielleicht den Quelltext schöner strukturiert...

Interessant wäre nun, ob sich ab X3 die anderen Konstanten (long, float etc.) auch irgendwie atypisch verhalten. Vielleicht fällt Dir da ja mal was auf.
 
Alle Sprachen
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
09.05.2023  
 




H.Brill
Bei den Zahlen-Konstanten wüßte ich jetzt nicht, wie.
Das ist ja eine feste Zahl und kein Literal "xxxx", das
zumindest in der Länge beweglich ist. Ein Long (&,%)
hat nunmal 4 Bytes, nicht mehr und nicht weniger.
Da kann man auch keine zusätzliche Variable einbetten.
Das hier funktioniert ja auch nicht :
DEF !Alter Pi()
DEF %w %MaxX
DEF $Ordner $AppDataDir'hier schon, da es auch ohne "" funktioniert

Und auch mit Addr() kommt man nicht dran.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
09.05.2023  
 




Matthias
Arlt
Da hast Du recht. Ich hätte auch nicht wirklich damit gerechnet. Es ist aber immer wieder interessant, was man nach Jahren der Nutzung so an 'Neuigkeiten' entdeckt...
 
Alle Sprachen
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
09.05.2023  
 




H.Brill
Ja, manchmal führen auch Flüchtigkeitsfehler bzw. Programmierfehler
zu solchen Erkenntnissen.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
10.05.2023  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.281 Betrachtungen

Unbenanntvor 0 min.
H.Brill09.10.2024
Gast.081508.07.2024
Rainer Hoefs06.07.2023
Sven Bader03.07.2023
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

H.Brill (5x)
Matthias Arlt (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie