Italia
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 il valore per 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 il valore per i% selber?


Ein kurzer Test bestätigt: For setzte il valore 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 trasferimento worden sein (als Parameter zB).

Laut der Aiuto ist genau das, was For...EndFor opposto der WhileLoop Schleife kann: una variabile innerhalb der For Schleife abfragen, sogenannte Laufvariable (naturalmente 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 naturalmente per die For Schleife necessario ... 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 il valore 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 Aiuto:

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.)

Saluto 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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.551 Views

Untitledvor 0 min.
Ernst29.05.2022
ByteAttack20.05.2022
Michael W.30.03.2022
RudiB.18.11.2021
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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