Bir değişkenin içeriğinin sayısal olup olmadığını nasıl kontrol edebilirim?

 
Herkese selam. Bir değişkenin içeriğinin, özellikle de sohbetteki bir metin kutusu nesnesinin içeriğinin sayısal olup olmadığını nasıl kontrol edebilirim? Aşağıdakileri denedim ama işe yaramadı:

ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );

if ( MathIsValidNumber ( ObjectGetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT ))== true ){ Print ( "Object Text Is Numeric" );}
OBJPROP_TEXT sayısal olsun ya da olmasın doğruyu göstermeye devam ettiyse. Sorunun çözümü ne olabilir. Şimdiden teşekkürler.
 

MathIsValidNumber bu şekilde çalışmıyor. "Dört"ü, "dört" veya "DÖRT" veya "vier" veya "dörtlü" veya "dörtlü"den daha fazla 4 olarak anlamaz.

"Dört"ü çift olarak atarsanız, sonuç 0 olur.

0 geçerli bir sayı olduğundan, işleviniz true değerini döndürür.

Bunu başarmak istiyorsanız, kendi kelimelerinizi sayılara dönüştürmeniz gerekecektir.

Derleyiciniz sizi örtük bir dönüşüm hakkında uyarmalıydı ...

#property strict

kodunuzun en üstünde?

 
honest_knave :

MathIsValidNumber bu şekilde çalışmıyor. "Dört"ü, "dört" veya "DÖRT" veya "vier" veya "dörtlü" veya "dörtlü"den daha fazla 4 olarak anlamaz.

"Dört"ü çift olarak atarsanız, sonuç 0 olur.

0 geçerli bir sayı olduğundan, işleviniz true değerini döndürür.

Bunu başarmak istiyorsanız, kelimelerin sayılara dönüşümlerini kendi oluşturmanız gerekecektir.

Derleyiciniz sizi örtük bir dönüşüm hakkında uyarmalıydı ...

#property strict

kodunuzun en üstünde?

Sanırım soruyu anlamadın. Yukarıdaki kodu yazdım ve "Dört" bir sayı olmadığı için derleyicinin false döndürmesi bekleniyor. Ama true dönüyor ("Dört"ün bir sayı olduğu anlamına gelir). Nasıl uygun şekilde kodlayabilirim? "Dört"ün bir sayıya dönüştürülmesini istemiyorum.
 

cevabı anlamadın sanırım

"Four" veya "muz" veya "MetaQuotes" gibi bir dizeyi ikiye katlarsanız, sonuç 0 olur.

0 geçerli bir sayıdır.

Sıkı #property kullanıyor olsaydınız, derleyiciniz sizi bu konuda uyaracaktı.

"Sayı"nın 0 olmadığını test edebilirsiniz, ancak kasıtlı olarak 0 olarak girilip girilmediğini veya yalnızca dökümde 0'a dönüştürülüp dönüştürülmediğini yakalayamazsınız.

   ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
   double as_double = ( double ) ObjectGetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT );
   if (as_double != 0 && MathIsValidNumber (as_double)) Print ( "Object Text Is Numeric" );
 
honest_knave :

cevabı anlamadın sanırım

"Four" veya "muz" veya "MetaQuotes" gibi bir dizeyi ikiye katlarsanız, sonuç 0 olur.

0 geçerli bir sayıdır.

Sıkı #property kullanıyor olsaydınız, derleyiciniz sizi bu konuda uyaracaktı.

Lütfen ilk kodumu tekrar kontrol edin . Sadece ufak bir düzeltme yaptım. olması gerekiyordu
ObjectSetString ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
ve yok
ObjectSetInteger ( 0 , "SimultaneousReleaseIndex" , OBJPROP_TEXT , "Four" );
Rahatsızlıktan dolayı özür dileriz. Artık cevabınızı da düzeltebilirsiniz. Nazik cevabınızı beklediğim için teşekkürler. Sıkı #özellik kullandığımı sanmıyorum.
 

Lütfen yazımı tekrar okuyun.

0'ın geçerli bir sayı olduğuna katılıyor musunuz?

 
honest_knave :

Lütfen yazımı tekrar okuyun.

0'ın geçerli bir sayı olduğuna katılıyor musunuz?

Elbette 0 geçerli bir sayıdır. Neden soruyorsun?
 
macpee :
Tabii ki, 0 geçerli bir sayıdır

Peki cevabımın hangi kısmını anlamadın?

Tekrar tekrarlamak için:

dürüst_knave :

"Dört"ü çift olarak atarsanız, sonuç 0 olur.

0 geçerli bir sayı olduğundan, işleviniz true değerini döndürür.

dürüst_knave :

"Four" veya "muz" veya "MetaQuotes" gibi bir dizeyi ikiye katlarsanız, sonuç 0 olur.

0 geçerli bir sayıdır.

 
honest_knave :
Peki cevabımın hangi kısmını anlamadın?
Ancak OBJPROP_TEXT "Dört" ve "0" değil. Ayrıca, "Dört"ün "0" olarak kabul edileceğini söylediniz... Şimdi soru şu, "Dört"ü iki katına mı bastım? Kodumun hangi kısmı "Dört" veya "muz" veya "Metaquote" kelimesini ikiye katladı?
 
macpee :
Ancak OBJ_TEXT "Dört" ve "0" değil. Ayrıca, "Dört"ün "0" olarak kabul edileceğini söylediniz... Şimdi soru şu, "Dört"ü iki katına mı bastım?

"sdgfjhsdfkjdshfkjsfdhskdjh" den bir sayı yap deseydim bana hangi sayıyı verirdin?

 
honest_knave :

"sdgfjhsdfkjdshfkjsfdhskdjh" den bir sayı yap deseydim bana hangi sayıyı verirdin?

0 tabii ki. Ama yazdığım koda karşılık gelen soru, benden "sdgfjhsdfkjdshfkjsfdhskdjh"den bir sayı yapmamı istememiş olmanız. Ama "sdgfjhsdfkjdshfkjsfdhskdjh"nin bir sayı olup olmadığına karar vermek için. Bu yüzden "sdgfjhsdfkjdshfkjsfdhskdjh" den bir sayı yapabileceğinizi düşünüyorum. Ancak "sdgfjhsdfkjdshfkjsfdhskdjh"nin bir sayı olmadığı da bir gerçektir.