Deutsch
Wünsche und Anregungen

Variablen ohne Postfix

 
- Seite 1 -



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  
 



 
- Seite 1 -



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  
 



 
- Seite 2 -



Dieter
Zornow
Es wäre ja auch mal interessant zu erfahren, um wieviele neue Typen es sich handelt und welche das sind.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
23.10.2009  
 




RGH
Dieter Zornow, Beitrag=54593, Zeitpunkt=23.10.2009
Es wäre ja auch mal interessant zu erfahren, um wieviele neue Typen es sich handelt und welche das sind.


Noch gibt es gar keine neue Typen. Bevor ich mir darüber Gedanken mache, will ich erst mal die Möglichkeit schaffen, solche einzuführen. Gefordert wurden bereits QuadInt, Unsigned Integertypen, Single (32-Bit Floats), Boolean, etc. Denkbar wären auch Typen wie Date, WideChar, etc.
Wie gesagt, vorerst geht es nur darum, die Möglichkeit zu schaffen.

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  
 



Ist natürlich auch immer Geschmackssache, ich hatte mich damals konsequent für die jeweilige Kurzversion entschieden.

Longint > Long
Integer > Int
Memory > Mem
Boolean > Bool
Float > Float
String > String
Byte > Byte

Das Linke ist basichafter, anderes moderner - ich würde beides ermöglichen.
 
24.10.2009  
 




Nico
Madysa
Als -- womöglich letzten -- Variablentyp, der auch ein Postfix hat (meinetwegen §) schlüge ich 64-Bit-Integer vor, mit denen man auch im Gigabytebereich rechnen kann. Die sind mir mal, als ich Festplattengrößen angeben wollte, sehr nötig geworden.
 
Nico Madysa
24.10.2009  
 




ByteAttack
Vielleicht könnte man die Variablen selbst verschnellern in dem man gleich bei der Deklarierung einen Wert zuweist.
Beispiel:
Declare Wert%=5000, Wert$="Hallo Welt", etc...

Dann würde der Code glaub ich schneller laufen? oder ?
 
Website:  [...] 
Facebook:  [...] 
26.10.2009  
 




RGH
Marc-Gordon, Beitrag=54622, Zeitpunkt=26.10.2009
Vielleicht könnte man die Variablen selbst verschnellern in dem man gleich bei der Deklarierung einen Wert zuweist.
Beispiel:
Declare Wert%=5000, Wert$="Hallo Welt", etc...

Dann würde der Code glaub ich schneller laufen? oder ?


Zum einen: Dafür gibt es den Befehl VAR
Zum anderen: Eine Variable wird ja dort eingesetzt, wo sich der Wert im Laufe des Programmes durch Zuweisung des öfteren ändert. Dann dürfte die geringe Zeitersparnis bei der ersten Zuweisung nicht meßmar ins Gewicht fallen. (Wenn sich der Wert nicht ändert, ist eine Konstante empfehlenswerter. Die ist deutlich schneller.)

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
26.10.2009  
 




RGH
Nico Madysa, Beitrag=54603, Zeitpunkt=24.10.2009
Als -- womöglich letzten -- Variablentyp, der auch ein Postfix hat (meinetwegen §) schlüge ich 64-Bit-Integer vor, mit denen man auch im Gigabytebereich rechnen kann. Die sind mir mal, als ich Festplattengrößen angeben wollte, sehr nötig geworden.


Es wird definitiv keinen neuen Variablentyp mit Postfix mehr geben. Aber der QuadInt könnte der erste Typ der neuen Syntax werden.

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
26.10.2009  
 




Dieter
Zornow
Ein vorzeichenbehafter 32bit Float-Wert wäre auch nicht schlecht. Einige DLLs geben sowas zurück und man kann es nicht in Profan übernehmen. Es kommt sogar in einigen Fällen zum Programmabsturz.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.10.2009  
 




RGH
Dieter Zornow, Beitrag=54626, Zeitpunkt=26.10.2009
Ein vorzeichenbehafter 32bit Float-Wert wäre auch nicht schlecht. Einige DLLs geben sowas zurück und man kann es nicht in Profan übernehmen. Es kommt sogar in einigen Fällen zum Programmabsturz.


An den Typ Single habe ich in der Tat auch schon gedacht.
Aber auch jetzt schon kann man in XProfan mit derartigen DLLs arbeiten (nahezu alle Open-GL-Aufrufe benutzen 32-Bit Floats (=Single)):
Wenn die DLL ein Single als Parameter erwartet: Eine XProfan-Float (Double) mit der Funktion Single() auf einen LongInt mappen und diesen der DLL übergeben.
Wenn die DLL eine Single zurückgibt: Das Ergebnis zunächst in ein LongInt aufnehmen und dann mit der Funktion Double() in ein XProfan-Float wandeln.
(Siehe in der Hilfe das Kapitel "28.9 - Hilfsfunktionen für 32-Bit-Fließkommazahlen".)

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
26.10.2009  
 




Dieter
Zornow
Es geht im speziellen um die Audiogenie.dll und da waren ja damals alle Versuche nicht erfolgreich. Mittlerweile hat Stefan einige wichtige Ergebnisse extra für Profan-User erweitert. Aber die Floats sind nach wie vor nicht zu übernehmen.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.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.574 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