Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
{
//---
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 );
}
//+------------------------------------------------------------------+
Bana bak. Bilmeliydim. @whroeder1'e teşekkürler.
Başka bir şey de negatif sayıların nasıl girileceğidir. Kodun, yalnızca girişin başında olumsuzlama işaretini (-) yakalaması gerekir.
Ayrıca, kodu mükemmelleştirmek için. (45-20) gibi sayıların ortasında bile olumsuzlama sembolünü (-) kabul edip çıkarma işlemi gibi ele alıp değerlendirip kodu kullanması gerekir.
Bütün fikir, OBT_EDIT'in OBJPROP_TEXT özelliğini ekonomik takvim verilerini kabul edecek ve onlara oldukları gibi davranacak şekilde yapmaktır. Bu nedenle, IsNumeric'in yerleşik bir işlevi, onun için gereksiz yere büyük kodlar yazmaktan kaçınmak için oldukça önemlidir.
Tabii ki bir nokta (.) sayısal olmalıdır, çünkü (.) nokta ve sıfır (.0) ile aynı şey olarak kabul edilir, ki bu aslında sıfır (0)'dır. Şimdi nokta sayısını (.....) artırmayı denedim ve hala onu sayısal olarak tanıyor. İlk nokta alıntılandıktan sonra ek noktayı (....) ortadan kaldırmak için nokta (.) koduna ihtiyacımız var.
Başka bir şey de negatif sayıların nasıl girileceğidir. Kodun, yalnızca girişin başında olumsuzlama işaretini (-) yakalaması gerekir.
Ayrıca, kodu mükemmelleştirmek için. (45-20) gibi sayıların ortasında bile olumsuzlama sembolünü (-) kabul edip çıkarma işlemi gibi ele alıp değerlendirip kodu kullanması gerekir.
Bütün fikir, OBT_EDIT'in OBJPROP_TEXT özelliğini ekonomik takvim verilerini kabul edecek ve onlara oldukları gibi davranacak şekilde yapmaktır. Bu nedenle, IsNumeric'in yerleşik bir işlevi, onun için gereksiz yere büyük kodlar yazmaktan kaçınmak için oldukça önemlidir.
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
Başka bir şey de negatif sayıların nasıl girileceğidir. Kodun, yalnızca girişin başında olumsuzlama işaretini (-) yakalaması gerekir.
Burada bir yankı var mı?
Evet, öyle bir şey.
Şu konularda dikkatli olmanız gerekir:
________________________________
Bu arada, kodun listesini bulamıyorum (ASCII, sanırım).
Hadi, bir şans ver. Arama becerilerini geliştirmek için bir fırsat için can attığını biliyorum.
________________________________
Bütün fikir, OBT_EDIT'in OBJPROP_TEXT özelliğini ekonomik takvim verilerini kabul edecek ve onlara oldukları gibi davranacak şekilde yapmaktır. Bu nedenle, IsNumeric'in yerleşik bir işlevi, onun için gereksiz yere büyük kodlar yazmaktan kaçınmak için oldukça önemlidir.
Niyetinizi yanlış anlamış olsam da, kullanıcının bir düzenleme kutusuna tarih girmesini ve ardından bunları tarih saatleri olarak yorumlamasını istiyorsanız (muhtemelen negatif sayılarla ilgileniyorsanız değil), bunun en iyi yaklaşım olduğuna ikna olmadım. sayıda neden.
Burada bir yankı var mı?
________________________________
Hadi, bir şans ver. Arama becerilerini geliştirmek için bir fırsat için can attığını biliyorum.
________________________________
Niyetinizi yanlış anlamış olsam da, kullanıcının bir metin kutusuna tarih girmesini ve ardından bunları tarih saatleri olarak yorumlamasını istiyorsanız (muhtemelen negatif sayılarla ilgileniyorsanız değil), bunun en iyi yaklaşım olduğuna ikna olmadım. sayıda neden.
Aslında söz konusu ekonomik veriler tarihleri içermez - sadece 'gerçek', 'tahmin', 'önceki' ve muhtemelen 'gözden geçirilmiş' veriler. Elbette B(milyar için), %(yüzde için) vb. gibi sembolleri de girmek niyetinde değiliz. Sadece boşluksuz saf gerçek sayılar. Buradaki fikir, "Eşzamanlı Yayın İndeksi" dediğim şeyi hesaplamak. Aynı anda yayınlanan bir dizi ekonomik veriyi birleştirmek ve bunları tek bir veri olarak görmek içindir. Birleşik "gerçek" ve birleşik "tahmin" vb. arasındaki ilişkiyi görmek için tüm "gerçekleri" tek bir "gerçek" olarak, tüm "tahminleri" tek bir "tahmin" olarak vb. birleştirirdim.
Böyle:
Örneğin
{
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 );
}
true döndürürse, dizeyi bir sayı olarak yayınlayabilirsiniz.
Böyle:
Örneğin
{
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 );
}
true döndürürse, dizeyi bir sayı olarak yayınlayabilirsiniz.