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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43256
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 10 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 439
Gesamt: 439
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.11.16
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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.
Thema geschlossen

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 08:03 Uhr.





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