
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
{
//---
ObjectCreate("SimultaneousReleaseIndex1",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT,"Four");
ObjectCreate("SimultaneousReleaseIndex2",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT,"44");
ObjectCreate("SimultaneousReleaseIndex3",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT,"Forty4");
ObjectCreate("SimultaneousReleaseIndex4",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT,".1234567890");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT)))
Print("text1 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT)))
Print("text2 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT)))
Print("text3 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT)))
Print("text4 is numeric");
}
//---
bool IsNumeric(string text)
{
int length=StringLen(text);
for(int i=0;i<length;i++)
{
int char1=StringGetChar(text,i);
if((char1>47 && char1<58) || char1==46)
continue;
else
return(false);
}
return(true);
}
//+------------------------------------------------------------------+
Oh, sieh mich an. Ich hätte es wissen müssen. Vielen Dank @whroeder1.
Eine andere Sache ist, wie man negative Zahlen eingibt. Der Code muss das Negationszeichen (-) nur am Anfang der Eingabe erfassen.
Und um den Code zu perfektionieren. Er muss das Negationszeichen (-) auch in der Mitte von Zahlen wie (45-20) akzeptieren und es als Subtraktion behandeln und auswerten und dann den Code
Die ganze Idee ist, die OBJPROP_TEXT-Eigenschaft von OBT_EDIT so zu gestalten, dass sie wirtschaftliche Kalenderdaten akzeptiert und sie als die Zahlen behandelt, die sie sind. Aus diesem Grund ist eine eingebaute Funktion IsNumeric sehr wichtig, um zu vermeiden, dass unnötig viel Code dafür geschrieben wird.
Natürlich sollte ein Punkt (.) numerisch sein, da (.) als dasselbe angesehen wird wie ein Punkt und eine Null (.0), die in Wirklichkeit Null (0) ist. Jetzt habe ich versucht, die Anzahl der Punkte zu erhöhen (.....) und es wird immer noch als numerisch erkannt. Wir brauchen den Code für den Punkt (.), um den zusätzlichen Punkt (....) zu eliminieren, sobald der erste Punkt eingegeben wurde.
Eine andere Sache ist, wie man negative Zahlen eingibt. Der Code muss das Negationszeichen (-) nur am Anfang der Eingabe erfassen.
Und um den Code zu perfektionieren. Er muss das Negationszeichen (-) auch in der Mitte von Zahlen wie (45-20) akzeptieren und es als Subtraktion behandeln und auswerten und dann den Code
Die ganze Idee ist, die OBJPROP_TEXT-Eigenschaft von OBT_EDIT so zu gestalten, dass sie wirtschaftliche Kalenderdaten akzeptiert und sie als die Zahlen behandelt, die sie sind. Deshalb ist eine eingebaute Funktion IsNumeric sehr wichtig, um nicht unnötig viel Code dafür zu schreiben.
macpee:
Of course a period (.) should be numeric since (.) is regarded as the same thing with a period and zero (.0) which is in fact zero (0). Now I tried increasing the number of period (.....) and it is still recognizing it as numeric. We need the code for period (.) so as to eliminate additional period (....) once the first period has been cited in
Ein weiterer Punkt ist die Eingabe negativer Zahlen. Der Code muss das Negationszeichen (-) nur am Anfang der Eingabe erfassen.
Gibt es hier ein Echo?
Ja, so etwas in der Art.
Sie müssen vorsichtig sein:
________________________________
Übrigens kann ich die Liste des Codes nicht finden (ASCII, nehme ich an).
Na los, probieren Sie es aus. Ich weiß, dass du schon lange darauf wartest, deine Suchfähigkeiten zu verbessern.
________________________________
Die ganze Idee ist, die OBJPROP_TEXT-Eigenschaft von OBT_EDIT dazu zu bringen, wirtschaftliche Kalenderdaten zu akzeptieren und sie als die Zahlen zu behandeln, die sie sind. Deshalb ist eine eingebaute Funktion IsNumeric sehr wichtig, um zu vermeiden, dass unnötig viel Code dafür geschrieben wird.
Vielleicht habe ich Ihre Absicht missverstanden, aber wenn Sie wollen, dass der Benutzer Daten in ein Eingabefeld eingibt und diese dann als Datumsangaben interpretiert (möglicherweise nicht, wenn Sie an negativen Zahlen interessiert sind), bin ich aus mehreren Gründen nicht davon überzeugt, dass dies der beste Ansatz ist.
Gibt es hier ein Echo?
________________________________
Los, probieren Sie es aus. Ich weiß, dass du schon lange darauf wartest, deine Suchfähigkeiten verbessern zu können.
________________________________
Vielleicht habe ich Ihre Absicht falsch verstanden, aber wenn Sie möchten, dass der Benutzer Daten in ein Textfeld eingibt und diese dann als Datumsangaben interpretiert (möglicherweise nicht, wenn Sie an negativen Zahlen interessiert sind), bin ich nicht davon überzeugt, dass dies aus einer Reihe von Gründen der beste Ansatz ist.
Die fraglichen Wirtschaftsdaten enthalten keine Daten, sondern nur "aktuelle", "prognostizierte", "frühere" und möglicherweise "revidierte" Daten. Natürlich haben wir auch nicht die Absicht, Symbole wie B(für Milliarde), %(für Prozent) usw. einzugeben. Nur reine reelle Zahlen ohne Leerzeichen. Die Idee ist, etwas zu berechnen, das ich "Simultaneous Release Index" nenne. Er soll eine Reihe von Wirtschaftsdaten, die gleichzeitig veröffentlicht werden, zusammenfassen und sie als ein Datum betrachten. Ich würde alle "Ist-Werte" zu einem "Ist-Wert", alle "Prognosen" zu einer "Prognose" usw. zusammenfassen, um die Beziehung zwischen dem kombinierten "Ist-Wert" und der kombinierten "Prognose" usw. zu sehen.
So:
z.B..
{
StringReplace(text," ",NULL);
StringReplace(text,",",NULL);
int point_cnt = 0;
for(int i=StringLen(text)-1; i>=0; i--)
{
int this_char = StringGetChar(text,i);
if(this_char == '.')
{
point_cnt++;
if(point_cnt>1) return(false);
if(StringLen(text)<2) return(false);
}
else if(this_char == '+' || this_char == '-')
{
if(i>0) return(false);
}
else if(this_char < '0' || this_char > '9') return(false);
}
return(true);
}
Wenn das Ergebnis wahr ist, können Sie die Zeichenfolge in eine Zahl umwandeln.
So:
z.B..
{
StringReplace(text," ",NULL);
StringReplace(text,",",NULL);
int point_cnt = 0;
for(int i=StringLen(text)-1; i>=0; i--)
{
int this_char = StringGetChar(text,i);
if(this_char == '.')
{
point_cnt++;
if(point_cnt>1) return(false);
if(StringLen(text)<2) return(false);
}
else if(this_char == '+' || this_char == '-')
{
if(i>0) return(false);
}
else if(this_char < '0' || this_char > '9') return(false);
}
return(true);
}
Wenn das Ergebnis wahr ist, können Sie die Zeichenkette in eine Zahl umwandeln.