Deutsch
C ++ Forum

Deklarationen in Select-Block

 
- Seite 1 -


Sebastian müsste was hinter CaseOfAnweisungen steht in Funktionen umlenken... Aufwandsfrage
 
28.07.2008  
 



 
- Seite 1 -



Jac
de
Lad
Wie auch immer, jetzt gehts jedenfalls. Wenn ich ehrlich bin, der "Var"-Befehl ist mir sowieso suspekt. Die Variablen sollten am Anfang des Programms bzw. der Proc declariert werden und Schluss.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
28.07.2008  
 




Sebastian
König
iF
Ehhh, glatter prf2cpp-Bug. Innerhalb von CaseOf-Blöcken keine Variablendeklarationen nicht erlaubt? oO

Die Deklaration ist schon erlaubt, aber nach dem EndSelect oder in einem anderen CaseOf-Block darf dann nicht mehr darauf zugegriffen werden. In C++ sind lokale Variablen halt immer nur im aktuellen Block gültig...

...und in anderen Sprachen ist es mindestens schlechter Stil!

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
28.07.2008  
 



Speicher alloziieren hinter endSelect oder caseOf-Block schlechter Stil? Nunu, das halte ich für eine gewagte Aussage da es in XProfan keine Variablen gibt mit denen die Variablen, welche Du meinst, vergleichbar wären.

In XProfan sind Variablen wohl eher Speicheraliase - einfach herrlich! Hier zwischen .data und .code zu unterscheiden ist das, was ich "gewagt" nenne.

Warum erkundest nicht die Deklarationen zuvor und ziehst sie "hoch"?
 
28.07.2008  
 




Sebastian
König
iF
Warum erkundest nicht die Deklarationen zuvor und ziehst sie "hoch"?

Sowas mache ich teilweise, bei Prozeduren, die mehrere Parameters Zeilen haben. Aber hier geht es ja um sowas wie
KompilierenMarkierenSeparieren
select test%

    casof 1
    var a& = 1
    var b& = 2

    caseof 2

    var a& = 3
    var b& = 4

endselect

print a& + b&

Dieser Code würde zum Beispiel wenn test% weder 1 noch 2 ist, eine Fehlermeldung zur Laufzeit produzieren. Deshalb bin ich der Meinung, dass a& und b& in jedem Fall vor dem Select deklariert werden sollten. Bei Variablen, die jeweils nur lokal in einem der CaseOf-Teile benutzt werden, ist das natürlich etwas anderes...

MfG

Sebastian

P.S.: Per Brute-Force gehts auch jetzt schon mit Profan2Cpp: Einfach "Alle Variablen global deklarieren" aktivieren.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
28.07.2008  
 




Jac
de
Lad
[QUOTE_="Sebastian König"][QUOTE_="iF"]..."Alle Variablen global deklarieren"...[/QUOTE]
Was nicht immer empfehlenswert ist.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
28.07.2008  
 



Sebastian König
sowas wie
KompilierenMarkierenSeparieren
proc a

    select test%

        casof 1
        var a& = 1
        var b& = 2

        caseof 2

        var a& = 3
        var b& = 4

    endselect

    print a& + b&

endProc



Hier würde einem otherWise z.B. ein Return fehlen - ein Programmierfehler.

Die Vars oder andere Deklarationen im Select könntest doch einfach grundsätzlich so betrachten:
KompilierenMarkierenSeparieren
declare a&,b& weil im selectblock deklarationen für a& und b& gefunden wurden

select test%

    casof 1
    a& = 1
    b& = 2

    caseof 2

    a& = 3
    b& = 4

endselect

print a& + b&

Aber ich denke andere Dinge sind da wichtiger!
 
28.07.2008  
 




Sebastian
König
iF
Die Vars im Select könntest doch einfach grundsätzlich so "hoch ziehen":


Schon klar, was Du meinst, aber ich mag das ganze irgendwie nicht. Die wiederholten Deklarationen sind ja auch redundant - am liebsten würde ich nur den Syntax-Check dazu bringen, das ganze anzumeckern... Aber was solls - XProfan erlaubt das ganze ja leider und ich werde mich in der einen oder anderen Form darum kümmern müssen...

@Jac: Ja, "Alle Variablen global deklarieren" sollte wirklich nur als letzter Ausweg benutzt werden.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
28.07.2008  
 



Sebastian König
Die wiederholten Deklarationen sind ja auch redundant - am liebsten würde ich nur den Syntax-Check dazu bringen, das ganze anzumeckern...


Um die Frage nach dem Schalter zur Unterdrückung dieser Meldung vorzuprogrammieren...

Einige Dinge werden aber gänzlich nicht möglich sein da XProfan ja dank der Runtime Möglichkeiten besitzt, welche nunmal eine "Runtimeumgebung" benötigen...
 
28.07.2008  
 




Sebastian
König
iF
Um die Frage nach dem Schalter zur Unterdrückung dieser Meldung vorzuprogrammieren...

Zumindest von Dir ;). Aber findest Du das mit den wiederholten Deklarationen wirklich schön?

iF
Einige Dinge werden aber gänzlich nicht möglich sein da XProfan ja dank der Runtime Möglichkeiten besitzt, welche nunmal eine "Runtimeumgebung" benötigen...


Ja, in der Tat. Set("Escape",...) und Execute wären ein Beispiel dafür, wobei letzteres ja auch in XProfan selbst nur im Interpreter funktioniert. Immerhin wird es demnächst ein Plug-In geben, mit dem man dafür sorgen kann, dass %ProgEnd einen korrekten Wert liefert. Hier würde mich interessieren, ob das außer Jac sonst noch jemand einsetzen würde...

MfG

Sebastian

P.S.: Ich werde den Thread mal splitten - ist das automatische Hinzufügen eines Hinweises auf die Aufteilung eigentlich schon implementiert? EDIT: Offenbar nicht - wäre wirklich praktisch!
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
28.07.2008  
 



Sebastian König
Aber findest Du das mit den wiederholten Deklarationen wirklich schön?


Wiederholte?

Deklarieren nach VAR halte ich für eine kluge Entscheidung beim Programmieren mit XProfan.

Damit ists automatisch auch "schön", es macht ja Sinn.

Sebastian König
P.S.: Ich werde den Thread mal splitten - ist das automatische Hinzufügen eines Hinweises auf die Aufteilung eigentlich schon implementiert? EDIT: Offenbar nicht - wäre wirklich praktisch!


Das hole ich nach!
 
28.07.2008  
 




Sebastian
König
iF
Wiederholte?

Deklarieren nach VAR halte ich für eine kluge Entscheidung beim Programmieren mit XProfan.

Damit ists automatisch auch "schön", es macht ja Sinn.


Mit wiederholt meine ich das Deklarieren der gleichen Variablen in den diversen CaseOf-Blöcken statt eines Declare vor dem Select. Den Var-Befehl an sich halte ich auch für eine sehr praktische Erweiterung!
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
28.07.2008  
 



 
- Seite 2 -


iF
Irre ich mich, oder müsste man sonst Variablen deklarieren, welche man vielleicht nicht benötigt?


Entweder Du irrst oder Du verstehst mich falsch: Mir geht es die ganze Zeit nur um solche Variablen, die nach dem Select-Block noch weiter benutzt werden.
 
28.07.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.610 Betrachtungen

Unbenanntvor 0 min.
Dean Wood27.01.2013

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (6x)
Sebastian König (5x)
Jac de Lad (2x)


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