Deutsch
Forum

Variable mit DEF

 

Dieter
Zornow
Hi IF,

XPSE erkennt nicht wenn eine Variable definiert ist mit DEF.
Beispiel: DEF Name$(0) String$(mem#,0), XPSE gibt eine Warnung, dass Name$ nicht declariert ist.

Viel Grüße aus Bangkok

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
01.07.2007  
 




Jac
de
Lad
Mit Def Name$(0) String$(mem#,0) declarierst du aber eine Funktion. Ich weiß nicht ob das ein Denkhänger von dir 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
01.07.2007  
 




Dieter
Zornow
Richtig, ist eine Funktion, da habe ich mich wohl falsch ausgedrückt, kann passieren.
Was ist ein Denkanhänger, noch nie gehört, vielleicht ein Kandidat für das Wort des Tages oder
der Woche

Viele Grüße aus Bangkok

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
01.07.2007  
 



XPSE kommt mit DEF bestens klar - hast Du mal ein Beispielcode?
 
01.07.2007  
 




Rolf
Koch
Eine Frage: Seit wann eine Variable in Def?
Name$ oder Name&

Eigentlich doch dann so:
Def Name(0) String$(mem#,0)
oder?

Denn es ist eine Funktion. Und Name ist hier der Funktionsname.
Wäre ja genauso wie eine Proc:
Proc blabla$
...
Endproc
Würde auch nicht funktionieren
 
01.07.2007  
 



Hrm - Roland erlaubt IMHO Procnamen wie Name$.

XPSE ist da weniger gnädig - lässt es aber unter Umständen dennoch manchmal durchgehen.
 
01.07.2007  
 




Rolf
Koch
Jo, da hat XPSE auch Recht , dass es weniger gnädig ist.
 
01.07.2007  
 



Neulich erreichte mich die Frage ob XPSE Freizeichen in Variablennamen oder Funktionsnamen erlauben würde - und ob XProfan dies tun würde. Das ist kein Scherz!
 
01.07.2007  
 




Rolf
Koch
- Coooool
 
01.07.2007  
 




Dieter
Zornow
Hier ein minimal Code, bringt die Warnung undefinierte Funkion, was auch immer dies bedeuten soll.
Der Knackpunkt ist das $ im Namen, ohne das wirds akzeptiert. Sollte aber meiner Meinung nach gehen,
da es der Übersicht dient, mit diesem Zeichen ist sofort klar, dass hier ein String das Ergebnis ist.
Ich benenne alle Defs in der Form nach der Rückegabe z.B auch name&
DEF Name$(0) String$(mem#,0)
cls
Declare mem#
dim mem#,100
string mem#,0 = Hallo
print name$()
dispose mem#
waitinput

Viele Grüße aus Bangkok

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
02.07.2007  
 




RGH
Also: Dein Code läuft bei mir einwandfrei und mach genau das, was man erwartet!
(Getestet mit XProfan 10.0a im Interpreter und kompiliert.)

Gruß
Roland

Nachtrag: Sorry, ich hatte überlesen, daß es hier um den XPSE geht. Aber Deine Syntax ist auf alle Fälle korrekt! Das $ im Funktionsnamen ist kein Problem, schließlich sind schon seit frühesten BASIC-Zeiten String-Funktionen durch dieses abschließende $ gekennzeichnet. Das ist natürlich auch für mit DEF definierte Funktionen möglich.
Unabhängig davon empfehle ich jedoch, Funktionen statt mit DEF zu definieren durch eine Prozedur mir Rückgabewert zu definieren. Auch dann ist das $-Zeichen erlaubt:
Proc Name$

    Return String$(mem#,0)

EndProc

cls
Declare mem#
dim mem#,100
string mem#,0 = Hallo
print name$()
dispose mem#
waitinput
 
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
02.07.2007  
 



xpse meint

Warnung: (NAME$) undeklarierte Funktion. (~1)

weil im Source

print name$()

steht - und Name$ nicht als Funktion* deklariert wurde.

Ich zitiere Dich mal:

Hi IF,

XPSE erkennt nicht wenn eine Variable definiert ist mit DEF.


Und genau hier ist das Problem. Du meintest eine Funktion statt einer Variablen - und da XPSE immer um Klarheit bemüht ist und um eine saubere Syntax - und da hierbei eindeutig eine Verwechslungsgefahr besteht - meckert er. Ein Stückchen weniger Verwechslungsgefahr bestünde dann - wenn name$ eindeutig als Funktion mit Proc deklariert würde.

Aber auch hierbei kann ich verraten das es sich eigendlich eben nicht gehört einer selbstdefinierten Funktion ein Variablen/TypSuffix zu verpassen. So viel ich bemerken konnte interessiert es nämlich dem XProfan absolut überhaupt garnicht welches Suffix der Funktionname trägt - entscheidend ist der Return-Typ.

Dieter Du bist ein alter Profan²-XProfan-Schlumpf - ich will Dich keinesfalls belehren - es geht halt darum auch ein bisl frischen und eindeutigeren Wind in die erlaubte Syntax zu bringen weil sich für mich persönlich (und für mich ist xpse entstanden) viele Fehlerquellen/Fallen aus einer Syntax ergeben welche zwar erlaubt ist - aber verboten gehört.

Du kannst alle Warnungen mit {$noerr} abschalten.
 
02.07.2007  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.877 Betrachtungen

Unbenanntvor 0 min.
Georg Teles09.09.2015
Roland Schäffer06.01.2011

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