Deutsch
Wünsche und Anregungen

Variablen ohne Postfix

 

RGH
Hallo,

wie schon angedeutet, möchte ich künftig neue Variablentypen in XProfan ermöglichen. Das erfordert einen ziemlichen Umbau in der Datenhaltung. In einem ersten Schritt hatte ich diesen Umbau durchgeführt, ohne aber die Syntax zu verändern.
Bislang wir der Typ einer Variablen wie im klassischen Basic durch ein Postfix, dem letzten Zeichen des Variablennamens, definiert: !, %, &, $ oder #. Der Parser war also genau darauf ausgelegt und erkannte und unterschied Variablen an diesem Postfix. Nun stellte sich die Frage, was für Postfixe könnte man den noch benutzen? Schließlich sollen die Zeichen auf der Tastatur leicht erreichbar sein. Da blieben noch solche Zeichen wie °, § und €. Ein Problem: Auf internationalen Tastaturen gibt es die Zeichen teilweise nicht. (Ok, nicht so dramatisch, da sich die internationale Verbreitung XProfans doch sehr in Grenzen hält.) Das Hauptproblem: Danach ist aber Schluß. € könnte noch für einen Währungstyp durchgehen.
Die vorläufige Lösung: Abkehr vom Postfix. Dazu musste der Parser komplett umgeschrieben werden und auch noch einige Befehle und Funktionen, die Variablennamen als Parameter verlangen (etwa CLEAR, DISPOSE, DECLARE, PARAMETERS, CLASSOF, SIZEOF, etc.). Außerdem braucht es für Variablennamen ohne Postfix noch eine neue Syntax, um den Typ zu bestimmen. Und 100%ig kompatibel zur bisherigen Syntax sollte es auch sein. So sieht die Lösung bei mir zur Zeit aus (und wird demnächst an die ersten Tester gehen):

Declare <Typ> <Name>, <Typ Name>, ...
Parameters <Typ> <Name>, <Typ Name>, ...
Var <Typ> <Name> = <Wert>

Die bisherigen Typen heißen STRING, INTEGER, LONGINT, FLOAT und MEMORY.*

Neue und bisherige Syntax können beliebig gemischt werden. Zu beachten ist natürlich, dass bei Variablen mit Postfix dieses Zeichen Teil des Namens ist. So sind ja bislang schon X$, X&, X%, X! und X# unterschiedliche Variablen, die sich durch den Postfix unterscheiden. Also werden künfig auch STRING X und X$ zwei verschiedene Variablen sein. Da ein Variablenname nicht doppelt vorkommen darf, wird es natütlich nich gleichzeitig einen STRING X und einen LONGINT X geben dürfen. (Für Nutzer anderer Programmiersprachen eine Selbstverständlichkeit.)

So viel vorerst dazu. Wie gesagt: Bei mir funktioniert es schon.

Gruß
Roland

* denkbar wären auch die Bezeichnungen STRING, INT, LONG, FLOAT und MEM
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.10.2009  
 




Dieter
Zornow
Die Erweiterung der Variablen-Typen ist zu begrüßen, da es doch einige Probleme gibt, weil Profan einige Rückgaben von DLLs nicht verarbeiten kann. Die Postfix in Profan haben mir aber wegen der Übersichtlichkeit immer gut gefallen. Wenn man nur ein Teilstück betrachtet hat war immer klar um welchen Variablen-Typ es sich handelt. Das hat mich bei anderen Programmiersprachen immer gestört, dass man dann immer erst nachschauen musste um welchen Typ es sich handelt.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
22.10.2009  
 




RGH
Hallo,

für die bisherigen Typen ist die Verwendung des Postfix ja weiterhin möglich. Kompatibilität wird bei mir immer groß geschrieben! Es spricht also nichts dagegen, es weiter so hanzuhaben wie bisher. Beispiel:
KompilierenMarkierenSeparieren
cls
declare memory b, string s, longint l, float f
declare b#, s$, l&
declare string hugo
dim l&, 256
dim b#, 256
waitinput
byte b#,255 = 123
print byte(b#, 0)
print byte(b#, 255)
print byte(b#, 22256)
waitinput
dim l, 256
dim b, 256
byte b,255 = 123
print byte(b, 0)
print byte(b, 255)
print byte(b, 22256)
waitinput
l = 12345
inc l
print l
inc l,300
print l
dec l
print l
dec l,300
print l
waitinput
end

In anderen Sprachen (und künftig wohl auch in XProfan) nutze ich gerne folgende Notation für Variablennamen: Ich nutze ein Präfix, dass den Typ angibt, etwa i_Wert, l_Wert, s_Text, p_Zeiger, m_Bereich, etc. So werden die Variablen auch bei fehlendem Postfix lesbar. In meiner Firma gab es für Delphi und ZIM sogar entsprechende verbindliche Programmier-Regeln, damit die Quellcodes auch für andere lesbar waren.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.10.2009  
 




Jörg
Sellmeyer
Dann muß aber unbedingt so etwas wie:
KompilierenMarkierenSeparieren
dabei sein, sonst schreibt man sich ja blöd.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.10.2009  
 



Jörg Sellmeyer, Beitrag=54576, Zeitpunkt=22.10.2009
Dann muß aber unbedingt so etwas wie:
KompilierenMarkierenSeparieren
dabei sein, sonst schreibt man sich ja...


Ich schreib immer
KompilierenMarkierenSeparieren
Kürzer gehts nimmer. ^^
 
22.10.2009  
 




Jörg
Sellmeyer
Ich finde auch: Das Declare sollte man sich dann sparen können...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.10.2009  
 




RGH
Das Declare wird - schon wegen der Kompatibilität - bleiben.Außerdem sind die Worte String und Long bereits Befehle mit anderer Bedeutung.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.10.2009  
 



Und für Arrays:
KompilierenMarkierenSeparieren^^
RGH, Beitrag=54583, Zeitpunkt=22.10.2009
Außerdem sind die Worte String und Long bereits Befehle mit anderer Bedeutung.


Zur Unterscheidung geb ich das Postfix an, in der Hoffnung, dass niemand auf die Idee kommt, eine postfixlose Variable mit Postfix deklarieren zu wollen. ^^
KompilierenMarkierenSeparieren
long a,b,c
long a&,20=5,...
 
22.10.2009  
 




Thomas
Zielinski
Idee1:
Ginge ja auch wie in PHP und der gleichen. Gar keinen festen Typen auf die Varialen legen.
KompilierenMarkierenSeparieren
 $irgendwas = blub
 $irgendwas = 42

Idee2:
Bei der Deklarierung könnte man es doch auch so machen:
KompilierenMarkierenSeparieren
Gruß Thomas
 
XProfan X4; Win10 x64
Der Kuchen ist eine lüge!
23.10.2009  
 




Uwe
''Pascal''
Niemeier
Hi Leute!

Wenn das Postfix Teil des Dateinamens ist, wäre doch auch dies denkbar:

declare memory x#, string x$, longint x&, float x!

oder

declare memory x^, string x°, float x§

allerdings auch sinnloserweise

declare memory x!, float x$, string x%

(Aber wer das macht, ist eben selbst schuld)

Und erst wenn bei DECLARE kein Typ angegeben ist (alte Schreibweise),
wird das Postfix ausgewertet und dadurch der Typ bestimmt.
Damit hätte man doch alles unter einem Hut?

SeeYou
Pascal
 
23.10.2009  
 




RGH
@Thomas: Dein Vorschlag mit VAR wäre nicht kompatibel mit der jetzigen Form der Deklaration und den Typ erst bei der ersten Zuweisung zu bestimmen wäre auch gänzlich inkompatibel und mit einem Compiler sehr schwierig umzusetzen. Das würde vermutlich auch ein sehr ernstes Problem für Profan2CPP werden.

Die Befehle zur Deklaration bleiben so wie sie sind: DECLARE und VAR.

Ich schwanke noch zwischen den Typbezeichnungen "INTEGER, LONGINT, FLOAT, STRING, MEMORY" auf der einen und "INT, LONG, FLOAT, STRING, MEM" auf der anderen Seite. Für die längere Variante spricht, dass diese Typbezeichnungen sich bereits durch die komplette Hilfe von XProfan durchziehen und den Aufsteigern geläufig sind; für die kürzer Variante spricht die Bequemlichkeit mancher Programmierer.
(Ganz Tippfaule und Assemblerfreaks mit einem Faible für DreiBuchstabenBezeichner würden vermutlich INT, LNG, FLT, STR und MEM vorschlagen. ;) )

Jörgs Vorschlag zur Bequemlichkeit beim Entippen muss ich mal überdenken. Vermutlich ist es leichter programmiert, als in der Hilfe für Einsteiger verständlich dargelegt. ;)

@Pascal: Keine Bange, derartiger Unsinn wird nicht möglich sein: Entweder ein Postfix (wie bisher) oder eine Typangabe! Wenn ein Variablenname ein Postfix hat, dann definiert dieser beim DECLARE, VAR oder PARAMETERS den Typ. "DECLARE String test$" würde zu einer Fehlermeldung führen, genauso wie die bewusste Irreführung "DECLARE String test&".

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.10.2009  
 




Jörg
Sellmeyer
Wie wäre es so mit dem Hilfetext:



Deklarationen erfolgen wie bisher mit dem Schlüsselwort "Declare".

Declare Text$, Zahl%, Kommazahl!

Jetzt kann auch noch der Variablentyp dazu angegeben werden. Dann fällt das Postfix als Namensbestandteil weg:

Declare string s1, s2, s3
Declare integer zahl1, zahl2

Aber auch:

Declare string s1, integer zahl1, longint grossezahl1

Hinter einer Typbezeichnung können mehrere Variablen in Gruppen deklariert werden:

Declare string s1, s2, s3, integer zahl1, zahl2, float f1, f2

Sinnvoll bei dieser Art der Variablenbenennung (ohne Postfix) ist ein Kennzeichnung z. B. durch ein vorangestelltes Zeichen:

Declare string sText, sZeile, integer iBreite, iLaenge, float fEndSumme


Ich hätte auch nix gegen die Dreibuchstaben-Variante. Vielleicht optional...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.10.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.628 Betrachtungen

Unbenanntvor 0 min.
Vgdd05.06.2017
rquindt23.12.2016
Peter Max Müller13.05.2015
Heltal30.09.2014
Mehr...

Themeninformationen



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