Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   wie kann ich sowas lösen? (http://www.expert-advisor.com/forum/showthread.php?t=6062)

mante 26.03.18 20:39

'while' - expressions are not allowed on a global scope
 
hallo next user und traderdoc


danke

habe nur noch einen fehler im Compiler

Code:

int lastNumber = 0;

bool CheckNumber(int Range)
{
  if(Range != lastNumber)
           
      return true;
 
    else
     
      return false;
}
                                                      // Solange Test nicht ok, Schleife...
while(!CheckNumber())


{
  Range = int nextuser;                                  // Neue Zufallszahl...
 
Alert(nextuser);
 
  lastNumber = Range;
}


'while' - expressions are not allowed on a global scope none


ich habe schon alle klammern geprüft
ich finde ihn nicht :-)

Ca$hDigger 26.03.18 22:39

Das muss in eine Funktion.

C$D

mante 26.03.18 22:47

Danke
 
ich dachte mir ist bool CheckNumber() ja die Funktion


lg mante:)

Ca$hDigger 26.03.18 23:58

Die Schleife muss in eine Funktion, wie soll sie sonst aufgerufen werden...

next user 27.03.18 00:02

Zitat:

Zitat von mante (Beitrag 40758)
ich dachte mir ist bool CheckNumber() ja die Funktion


lg mante:)

Code:

bool CheckNumber(int Range)
{
  if(Range != lastNumber)
           
      return true;
 
    else
     
      return false;
} <<== Schließende Klammer von CheckNumber...
                                                      // Solange Test nicht ok, Schleife...
while(!CheckNumber())
...

Die while-Schleife muss dort hin, wo du die Zufallszahl generierst, nicht außerhalb jeder Funktion, wie "CheckNumber()".

Zitat:

Zitat von mante (Beitrag 40756)
Range = int nextuser;

Das "int" ist fehl am Platz.

Zitat:

Zitat von mante (Beitrag 40756)
... habe nur noch einen fehler im Compiler...

Nicht ganz, siehe vorherigen Punkt.
Und noch ein Fehler (der Compiler kann leider auch nicht ALLES, bräuchte mal ein Update. Folgenden Fehler hat er wohl nicht erkannt):
Zitat:

Zitat von mante (Beitrag 40756)
Range = int nextuser*;
...
Alert(nextuser*);

* ===>>> declaration of 'nextuser' hides predefined variable "next_user"


mante 27.03.18 11:16

vielen dank für eure Hilfe :-)

vor allem danke nexuser
irgendwo ist noch was falsch - ich habe zwar keine fehler mehr im Compiler aber print liefert keine zahlen

habt ihr eine Ahnung was da falsch ist

lg mante
Code:


    switch(a)
     
      {
             
      case 1:
      Range = 1;
      while(!CheckNumber(true))
      {
      CheckNumber (Range);
      Print ( "Die Zahl ist" +1);
      }
      break;
     
     
      case 2:     
      Range = 2;
      while(!CheckNumber(true))
      {
      CheckNumber(Range);
      Print (" Die Zahl ist 2");                                          // Zahl 15 wird an neu erstellte Funktion wert übergeben
      }
      break;
     
     
      case 3:
      Range = 3;     
      while(!CheckNumber(true))
      {
      CheckNumber(Range);
      Print (" Die Zahl ist 3");
      }
      break;
     
     
      case 4:
      Range = 4;
      while(!CheckNumber(true))
      {
      CheckNumber(Range);
      Print (" Die Zahl ist 4");   
      }
      break;
     
     
      case 5:
      Range = 5;
      while(!CheckNumber(true))
      {
      CheckNumber(Range);
      Print (" Die Zahl ist 5");
      }
      break;
     
     
      default:
      break;
   
      } 
}
 
                                                                    // Globale Variablen...

int lastNumber = 0;

bool CheckNumber(int Range)
{
 
 
  if(Range != lastNumber)
           
    return true;
 
    else
     
      return false;

 lastNumber = Range;


next user 27.03.18 11:56

Zitat:

Zitat von mante (Beitrag 40764)
Code:


    switch(a)
     
      {
             
      case 1:
      Range = 1;
      while(!CheckNumber(true))
      {
      CheckNumber (Range);
      Print ( "Die Zahl ist" +1);
      }
      break;


Was hast du denn da jetzt gemacht? IN der while-Schleife gehört "CheckNumber()" nicht rein!
Die wird doch im Kopf der Schleife aufgerufen. Und solange die Zufallszahl GLEICH der letzten ist, wird der Block der Schleife
ausgeführt! IN der Schleife musst du "Range" daher eine NEUE Zufallszahl zuweisen!

Ich glaube, da sind bei dir noch ein paar Verständnis- und Grundlagenprobleme.

Wenn du mal den Code posten könntest, wie du die Zufallszahlen erhälst, kann ich dir auch besser helfen.

mante 27.03.18 12:25

hallo nextuser
 
ich dacht mir

wenn

while (!CheckNumber(true)) // wenn anders als vorherige Zahl


wird

CheckNumber (Range);
Print ( "Die Zahl ist" +1);
}
die zahl an CheckNumber übergeben und ausgegeben :-)



damit hast du recht - leider :(

next user 27.03.18 12:39

Zitat:

Zitat von mante (Beitrag 40766)
ich dacht mir

wenn

while (!CheckNumber(true)) // wenn anders als vorherige Zahl


wird

CheckNumber (Range);
Print ( "Die Zahl ist" +1);
}
die zahl an CheckNumber übergeben und ausgegeben :-)

Zitat:

Zitat von next user (Beitrag 40765)
Ich glaube, da sind bei dir noch ein paar Verständnis- und Grundlagenprobleme.

damit hast du recht - leider :(

Du solltest für Zitate kein NEWSBREAK verwenden. ;)

=== === === === === === === === === === === ===

Gehen wir nochmal durch:
Meine gepostete Funktion war diese:
Code:

bool CheckNumber()
{
  if(randNumber != lastNumber)
      return true; // Zufallszahl ist anders -> Gib true zurück!
  else
      return false; // Zufallszahl ist gleich -> Gib false zurück!
}

Du hast daraus das gemacht:
Code:

bool CheckNumber(int Range)
{
  if(Range != lastNumber)
           
      return true;
 
    else
     
      return false;
}

Beide liefern nur "true", wenn die aktuelle Zufallszahl anders als die letzte ist.
Die beiden unterscheiden sich aber. Meine nutzt
eine globale Variable, deine einen Integer als Parameter.

Dein folgender Code
Code:

while(!CheckNumber(true))
{
  CheckNumber (Range);
  Print ( "Die Zahl ist" +1);
}

nutzt im Schleifen-Kopf eher meine Funktion (obwohl mit Parameter), im Block deine.
Die Funktionen machen aber das selbe und prüfen nur die Zahlen. Es bringt nichts, bei gleichen Zahlen IMMER, IMMER und
IMMER wieder zu prüfen (dein Funktionsaufruf im Block)!

Wie gesagt, wenn
Zitat:

Zitat von next user (Beitrag 40765)
du mal den Code posten könntest, wie du die Zufallszahlen erhälst, kann ich dir auch besser helfen.


next user 27.03.18 12:44

Zitat:

Zitat von traderdoc (Beitrag 40754)
Zitat:

Zitat von next user (Beitrag 40751)
Hey Doc, auch'n Tee... :D

=== === === === === === === === === === === ===

Willst Du mich damit aggressiv machen? :D

traderdoc

Ahh, jetzt weiß ich auch, welchen du möchtest.

https://cdn02.dm-static.com/images/m...417306_org.png


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum