Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5 > Codeschnipsel

Codeschnipsel Codeschnipsel für MQL5.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3359
Beiträge: 33848
Benutzer: 5.342
Aktive Benutzer: 599
Links: 79
Wir begrüßen unseren neuesten Benutzer: maxi
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 5 Stunden
- maxi
vor 20 Stunden
- athaclena
vor einem Tag
- Naale
vor einem Tag
- csabi911
vor einem Tag
- Adlerflüge...

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 37
Gesamt: 40
Team: 0
Team:  
Benutzer:  fxnoob, Naale, SentiTrader
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Wochen
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 110
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard Code Snippets - Eingabeprüfung leicht gemacht

Die Prüfung von Eingabewerten ist lästig, aber wichtig.
Also muß wieder eine Bibliotheksfunktion geschaffen (oder gefunden, wie hier) werden.
Ich nenne diese ValidRange() - Wertebereichsüberprüfung.
Die Parameter sind, denke ich, selbsterklärend.
Code:
int ValidRange(int aVal,   // zu überprüfender Wert
               int aMin,   // Minimum
               int aMax,   // Maximum
               string aMsg="Eingabewert") // Text für die Fehlermeldung

gibt gültigen Wert im Bereich von aMin bis aMax zurück
Beispiel: Eingabe einer integer Zahl zwischen 1 und 3
Die Verwendung im Programm:
Code:
input int inp_Number = 3;     // Number of LR Channels (1 - 3)

// die Eingabeprüfung
int Number = ValidRange(inp_Number,1,3, "Anzahl Channels");

// kurze Variante, Text "Eingabewert" wird defaultmäßig verwenden 
int Number = ValidRange(inp_Number,1,3);
Die Bibliotheksfunktion Variante MessageBox:
Code:
int ValidRange(int aVal, int aMin, int aMax, string aMsg="Eingabewert")
{
  int flags=MB_OK | MB_ICONWARNING;    // bitweises OR
  if(aVal<aMin) 
   {
      MessageBox(aMsg+" "+IntegerToString(aVal)+" zu klein. Wird auf "+IntegerToString(aMin)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMin);     // Minimalwert zurückgeben
   }
  if(aVal>aMax) 
   {
      MessageBox(aMsg+" "+IntegerToString(aVal)+" zu groß. Wird auf "+IntegerToString(aMax)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMax);     // Maximalwert zueückgeben
   }
  return(aVal);         // Wert war im gültigen Bereich
}
Die Bibliotheksfunktion Variante Print:
Code:
int ValidRange(int aVal, int aMin, int aMax, string aMsg="Eingabewert")
{
   if(aVal<aMin) {Print(aMsg+" ",aVal, " zu klein. Wird auf ",aMin, " korrigiert"); return(aMin);}
   if(aVal>aMax) {Print(aMsg+" ",aVal, " zu groß. Wird auf " ,aMax, " korrigiert"); return(aMax);}
   return(aVal);
}
Ja, es ist trivial, aber nützlich
Kann man natürlich auch für long oder double (mit gleichem Namen, der Compiler erkennt das) definieren.

Hier die long Variante:
Code:
long ValidRange(long aVal, long aMin, long aMax, string aMsg="Eingabewert")
{
  int flags=MB_OK | MB_ICONWARNING;    // bitweises OR
  if(aVal<aMin) 
   {
      MessageBox(aMsg+" "+IntegerToString(aVal)+" zu klein. Wird auf "+IntegerToString(aMin)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMin);     // Minimalwert zurückgeben
   }
  if(aVal>aMax) 
   {
      MessageBox(aMsg+" "+IntegerToString(aVal)+" zu groß. Wird auf "+IntegerToString(aMax)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMax);     // Maximalwert zueückgeben
   }
  return(aVal);         // Wert war im gültigen Bereich
}
Bei double benötigen wir noch die Anzahl Dezimalstellen als weiteren Parameter:
Code:
double ValidRange(double aVal, double aMin, double aMax, int aDigits=3, string aMsg="Eingabewert")
{
  int flags=MB_OK | MB_ICONWARNING;    // bitweises OR
  if(aVal<aMin) 
   {
      MessageBox(aMsg+" "+DoubleToString(aVal,aDigits)+" zu klein. Wird auf "+DoubleToString(aMin,aDigits)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMin);     // Minimalwert zurückgeben
   }
  if(aVal>aMax) 
   {
      MessageBox(aMsg+" "+DoubleToString(aVal,aDigits)+" zu groß. Wird auf "+DoubleToString(aMax,aDigits)+" korrigiert","* EINGABEFEHLER *",flags); 
      return(aMax);     // Maximalwert zueückgeben
   }
  return(aVal);         // Wert war im gültigen Bereich
}
Damit wird Eingabeprüfung zur einfachen Übung.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
codeschnipsel, codeschnipsel mql5, eingabeprüfung, programmierung, programmierung metatrader, programmierung mql5


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.



-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2016 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2016 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------