|
Codeschnipsel Codeschnipsel für MQL5. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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 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); 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 } 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); } 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 } 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 } |
Lesezeichen |
Stichworte |
codeschnipsel, codeschnipsel mql5, eingabeprüfung, programmierung, programmierung metatrader, programmierung mql5 |
|
|