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
Komplikasyonu gerçekten seviyorsun. Amaç yalnızca gerçek sayıları işlemekse, StringToDouble() ve özel durum 0'ın işlenmesini kullanın.
İlk çözüm buydu:
Değerin hiç 0 olmasını beklemiyorsanız, dizeyi bir çifte yazın ve 0'a eşit olmadığını test edin.
Bununla birlikte, OP, girilen değerin 0 olup olmadığını veya dizenin geçersiz bir sayı olmasının sonucu olarak 0 olup olmadığını ayırt etmek istedi. Hem "0" hem de "sfdlgkjsflkjdsklfsd", StringToDouble() veya (double) ile 0 ile sonuçlanacaktır.
Bu, daha sonra bu tartışmayı doğuran OP için kabul edilemezdi.
İlk çözüm buydu:
Bununla birlikte, OP, girilen değerin 0 olup olmadığını veya dizenin geçersiz bir sayı olmasının sonucu olarak 0 olup olmadığını ayırt etmek istedi. Hem "0" hem de "sfdlgkjsflkjdsklfsd", StringToDouble() veya (double) ile 0 ile sonuçlanacaktır.
Bu, daha sonra bu tartışmayı doğuran OP için kabul edilemezdi.
Basitleştirilmiş örnek:
if ( value == 0 )
{
if (inputs== "0" || inputs== "0.0" )
{
//--- all is ok
}
else
{
//--- wrong inputs
}
}
Bu yüzden "ve özel durum 0'ın işlenmesi" dedim.
Basitleştirilmiş örnek:
if ( value == 0 )
{
if (inputs== "0" || inputs== "0.0" )
{
//--- all is ok
}
else
{
//--- wrong inputs
}
}
Peki ya 0.00?
Veya +0,00?
Veya .0?
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ı.
Peki ya 0.00?
Veya +0,00?
Veya .0?
Bu yüzden "Basitleştirilmiş örnek" dedim. OP için işi yapmayacağım.
Yine de ilginç bir alıştırma, yani olası "0" varyasyonlarının bir listesine sahip olmak mı yoksa sadece her şeyi test etmek mi daha iyi?
İlki tartışmasız daha hızlıdır, ancak meşru bir varyasyonu kaçırma riski altındadır.
Ancak, yalnızca bir CHARTEVENT_OBJECT_ENDEDIT üzerinde test edilmesi gerektiğinde hız ne kadar önemlidir ?
Ne olursa olsun, OP'nin devam edecek çok şeyi olduğundan eminim!
Yine de ilginç bir alıştırma, yani olası "0" varyasyonlarının bir listesine sahip olmak mı yoksa sadece her şeyi test etmek mi daha iyi?
İlki tartışmalı olarak daha hızlıdır, ancak meşru bir varyasyonu kaçırma riski altındadır.
Ancak, yalnızca bir CHARTEVENT_OBJECT_ENDEDIT üzerinde test edilmesi gerektiğinde hız ne kadar önemlidir?
Ne olursa olsun, OP'nin devam edecek çok şeyi olduğundan eminim!
Veya normal ifade kullanarak :-D
Ayrıca "0" olarak sıfır girmeyi isteyebilir ve diğer tüm durumları reddedebilirsiniz.
Veya normal ifade kullanarak :-D
Şahsen, şöyle bir yaklaşım benimsiyordum:
ENDEDIT gerçekleştiğinde, OBJ_TEXT'i bir çifte dönüştürün ve ardından onu bir dizge olarak düzenleme kutusuna geri itin (biçimi kontrol etmek istersem StringFormat() kullanarak). Kullanıcı, eylemlerinin sonucunu hemen görecek ve ihtiyaçlarına uygun değilse değiştirecek veya bırakacaktır.
Örneğin
#define EDIT_BOX "EditBox"
int OnInit ()
{
ObjectCreate ( 0 , EDIT_BOX, OBJ_EDIT , 0 , 0 , 0 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_XDISTANCE , 200 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_YDISTANCE , 200 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_XSIZE , 100 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_YSIZE , 20 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_ALIGN , ALIGN_CENTER );
ObjectSetString ( 0 , EDIT_BOX, OBJPROP_TEXT , "Enter Value" );
return ( INIT_SUCCEEDED );
}
void OnDeinit ( const int reason)
{
ObjectDelete ( 0 , EDIT_BOX);
}
void OnChartEvent ( const int id, const long & lparam, const double & dparam, const string & sparam)
{
if (id== CHARTEVENT_OBJECT_ENDEDIT && sparam==EDIT_BOX)
{
double value = ( double ) ObjectGetString ( 0 , EDIT_BOX, OBJPROP_TEXT );
ObjectSetString ( 0 , EDIT_BOX, OBJPROP_TEXT , ( string )value);
}
}
Şahsen, şöyle bir yaklaşım benimsiyordum:
ENDEDIT gerçekleştiğinde, OBJ_TEXT'i bir çifte dönüştürün ve ardından onu bir dizge olarak düzenleme kutusuna geri itin (biçimi kontrol etmek istersem StringFormat() kullanarak). Kullanıcı, eylemlerinin sonucunu hemen görecek ve ihtiyaçlarına uygun değilse değiştirecek veya bırakacaktır.
Örneğin
#define EDIT_BOX "EditBox"
int OnInit ()
{
ObjectCreate ( 0 , EDIT_BOX, OBJ_EDIT , 0 , 0 , 0 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_XDISTANCE , 200 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_YDISTANCE , 200 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_XSIZE , 100 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_YSIZE , 20 );
ObjectSetInteger ( 0 , EDIT_BOX, OBJPROP_ALIGN , ALIGN_CENTER );
ObjectSetString ( 0 , EDIT_BOX, OBJPROP_TEXT , "Enter Value" );
return ( INIT_SUCCEEDED );
}
void OnDeinit ( const int reason)
{
ObjectDelete ( 0 , EDIT_BOX);
}
void OnChartEvent ( const int id, const long & lparam, const double & dparam, const string & sparam)
{
if (id== CHARTEVENT_OBJECT_ENDEDIT && sparam==EDIT_BOX)
{
double value = ( double ) ObjectGetString ( 0 , EDIT_BOX, OBJPROP_TEXT );
ObjectSetString ( 0 , EDIT_BOX, OBJPROP_TEXT , ( string )value);
}
}
Girişinizi doğrulamak için bir yola ihtiyacınız olacak. (ek bir düğme?)
Basit tutun. neyse sen nasıl istersen :p
Girişinizi doğrulamak için bir yola ihtiyacınız olacak. (ek bir düğme?)
Takip ettiğimden emin değilim...?
OP'nin amacını yanlış anlamış olabilirim, ancak arayüzün dinamik olacağına inanıyorum, yani bu düzenleme kutusundaki bir değişiklik, buna göre başka bir kutunun güncellenmesine neden olacaktır.
Bir doğrulama düğmeniz olabilir, ancak sonuç basitçe görüntüleniyorsa (işlemden ziyade) gereksiz bir ekleme olabilir. Ama emin değilim - OP'nin açıklığa kavuşturması gerekecek.
Basit tutun. neyse sen nasıl istersen :p
İşleri basit tutmak konusunda çok katılıyorum. Bundan daha basit mi oluyor?
ObjectSetString ( 0 , EDIT_BOX, OBJPROP_TEXT , ( string )value);
Not İstediğim gibi olduğundan emin değilim, bu benim için sadece akademik bir tartışma - buna ihtiyacım yok!
Takip ettiğimden emin değilim...?
...Bunu genel bir istek olarak alırsak: "Bir değişkenin içeriğinin sayısal olup olmadığı nasıl kontrol edilir?", en şık çözüm düzenli ifade kullanmaktır.