Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
MathIsValidNumber() bir double kabul eder. Lütfen belgeleri kontrol edin .
Bir ip veriyorsun.
#property strict kullanımıyla ilgili yorumlarımı görmezden gelmeye devam etmeseydin, derleyicinin seni bu konuda uyardığını görürdün.
Bir harf dizisini alıp bir double yaparsanız, double'ın değeri 0 olur .
0 geçerli bir sayıdır.
Bu nedenle kodunuz neden doğru dönüyor.
MathIsValidNumber() bir double kabul eder. Lütfen belgeleri kontrol edin.
Bir ip veriyorsun.
#property strict kullanımıyla ilgili yorumlarımı görmezden gelmeye devam etmeseydin, derleyicinin seni bu konuda uyardığını görürdün.
Bir harf dizisini alıp bir double yaparsanız, double'ın değeri 0 olur .
0 geçerli bir sayıdır.
Bu nedenle kodunuz neden doğru dönüyor.
Ama cevabında bana MathIsValidNumber()'ın stringleri değil, sadece double'ı karşılaştırdığını söylemedin. Bu arada, hangi numara geçerli bir numara değil? Karmaşık sayılar veya sonsuzluklar ve bu arada bunları MQL4'te kullanmak isteyenler hariç. Her neyse, "Anahtar Kelime" yanıltıcı görünüyor.
Ama cevabında bana MathIsValidNumber()'ın stringleri değil, sadece double'ı karşılaştırdığını söylemedin.
Belgeleri kontrol etme zahmetine girmiş olabileceğini düşündüm...
Ve eğer #mülkiyet konusunda katı tavsiyemi görmezden gelmeseydin...
Şimdi tekrar soruyorum, derleyiciye bir değişkenin herhangi bir sayı biçimi değil de bir dize tuttuğuna karar vermesini söyleyen komut nedir? Beklenen cevabınız için teşekkür ederim.
Değerin hiç 0 olmasını beklemiyorsanız, dizeyi bir çifte yazın ve 0'a eşit olmadığını test edin.
Belgeleri kontrol etme zahmetine girmiş olabileceğini düşündüm...
Ve eğer #mülkiyet konusunda katı tavsiyemi görmezden gelmeseydin...
Değerin hiç 0 olmasını beklemiyorsanız, dizeyi bir çifte yazın ve 0'a eşit olmadığını test edin.
Ama sıfır sayısına ne olur? Bunun tamsayı değerinin yanı sıra çifte bir değer olduğunu varsayıyorum. Dize yayınladığınızda 0, 0 girdiğinizde 0 döndürür. Yani...?
Evet, bu bir problem.
Döküm değeri = 0 ise bir dizi karşılaştırması yapabilirsiniz.
yani if(cast_value == 0 && str_value == "0")
Ancak girilen 0.0 veya 0.00 hakkında düşünmeniz gerekir.
Dizeyi bir karakter dizisine ayırabilir ve her karakteri test edebilirsiniz.
Bunun ne kadar önemli olduğuna bağlı.
{
//---
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);
}
//+------------------------------------------------------------------+
{
//---
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 );
}
//+------------------------------------------------------------------+
Evet, bu bir problem.
Döküm değeri = 0 ise bir dizi karşılaştırması yapabilirsiniz.
yani if(cast_value == 0 && str_value == "0")
Ancak 0.0 veya 0.00 girildiğini düşünmeniz gerekir.
Dizeyi bir karakter dizisine ayırabilir ve her karakteri test edebilirsiniz.
Bunun ne kadar önemli olduğuna bağlı.
Evet, öyle bir şey.
Şu konularda dikkatli olmanız gerekir:
Evet, öyle bir şey.
Şu konularda dikkatli olmanız gerekir:
Ernst Van Der Merwe :