Deutsch
Bugs und vermeintliche

For-Schleifen, Laufvariablen-Deklaration und Proc

 

Thomas
Zielinski
Hi,
ich habe es nicht finden können oder es steht tatsächlich nirgendwo. Hat mich auf jeden Fall ein paar Nerven gekostet.

Nutzt man eine For-Schleife innerhalb einer Proc, so muss auch die Laufvariable in dieser Proc Deklariert sein und nicht ausserhalb.

Das geht:
Declare zahl%[]
CLS
MACHVOLL
Print Str$(zahl%[4])
WaitInput
End

Proc MACHVOLL

    Declare i%
    For i%, 20
    zahl%[i%] = i%*128
    EndFor

EndProc


Das geht nicht. (Fehlermeldung Variable i% ist nicht Deklariert [oder so ähnlich])
Declare zahl%[], i%
CLS
MACHVOLL
Print Str$(zahl%[4])
WaitInput
End

Proc MACHVOLL

    For i%, 20
    zahl%[i%] = i%*128
    EndFor

EndProc


Was ich auch nicht finden kann: Muss ich vor der For ein "i% = 0" machen wenn i% vorher einen anderen Wert hatte, oder setzt For den Wert für i% selber?
 
XProfan X4
XProfan X4; Win10 x64
Der Kuchen ist eine lüge!
26.10.2021  
 




Thomas
Zielinski
Thomas Zielinski (26.10.2021)
Was ich auch nicht finden kann: Muss ich vor der For ein "i% = 0" machen wenn i% vorher einen anderen Wert hatte, oder setzt For den Wert für i% selber?


Ein kurzer Test bestätigt: For setzte den Wert der Laufvariable selbstständig zurück.

Völliges Chaos verursacht dann aber:
Declare i%
i% = 5
For i%,i%, 20//,1
zahl%[i%] = i%//<-- Ergebnis ist dann 0
EndFor
 
XProfan X4
XProfan X4; Win10 x64
Der Kuchen ist eine lüge!
26.10.2021  
 




RudiB.
Na Ja ...Startwert (I%=5) EndWert (i%=5) Schrittweite=20 ??????
wie soll das gut gehen, oder seh ich da was ganz falsch ??

Aber der erste Eintrag ist schon sehr mekwürdig....ein BUG ???
Hier ist dann wohl Roland gefragt....
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
26.10.2021  
 




RudiB.
....und hier ist Zahl%[ ] nicht deklariert...
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
26.10.2021  
 




Georg
Teles
Naja, das For erwartet offensichtlich eine deklarierte Variable ... wenn For innerhalb einer Proc stattfindet, muss diese dort deklariert oder zumindest übergeben worden sein (als Parameter zB).

Laut der Hilfe ist genau das, was For...EndFor gegenüber der WhileLoop Schleife kann: eine Variable innerhalb der For Schleife abfragen, sogenannte Laufvariable (natürlich kann man innerhalb der WhileLoop Schleife das &loop verwenden, bei For-Schleifen kann man darauf verzichten, wenn man selbst die Variablenvergabe organisiert).

Diese Laufvariable wird natürlich für die For Schleife benötigt ... so ginge das, wenn die Variable global deklariert wurde:
Declare i%, zahl%[]
CLS
MACHVOLL i%
Print Str$(zahl%[4])
WaitInput
End

Proc MACHVOLL

    Parameters i%
    For i%, 20
    zahl%[i%] = i%*128
    EndFor

EndProc


Nach der For Schleife wird die Variable innerhalb der Proc noch den Wert behalten, außerhalb der Proc aber wieder auf 0 gesetzt. Hier kann nur Roland bei Bedarf erklären, was im Hintergrund passiert.
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

26.10.2021  
 




RGH
Ein kurzer Verweis auf die Hilfe:

Wichtig: Die Schleifenzähler muss eine lokale Variable sein, d.h. sie muss in der Prozedur deklariert werden, in der die FOR-Schleife ist. Ist sie im Hauptprogramm, muss die Variable auch dort deklariert werden.

(Delphi hält es zum Beispiel auch so.)

Gruß Roland
 
XProfan X4
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
01.11.2021  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.705 Betrachtungen

Unbenanntvor 0 min.
Ernst29.05.2022
ByteAttack20.05.2022
Michael W.30.03.2022
RudiB.18.11.2021
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