Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 156
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
1) neden int err=0 bildirilirken hemen başlatılmıyor ?
2) kontrol etmedi, ancak belgelerin dediği gibi, hata GetLastError () işlevi kullanılırken otomatik olarak sıfırlanan bazı değişkenlerde saklanıyor,
ve ayrıca bazı işlevleri kullanırken her zaman değişir (çoğunlukla terminal olanlar)
3) bu nedenle GetLastError (), OrderSelect'te var olmayan bir bilet numarasına eriştikten sonra 0 değerini verdi:
" Kalan işlevler hiçbir koşulda last_error değişkeninin değerini değiştirmez. ................., OrderSelect , ............. .... ... "
Genellikle bunun gibi işlevlerin içinde bir tür değişkeni bildirdim:
Daha içeride, bir koşul altında, bir hata olup olmadığını görmek için onu zaten aradım. Valla bu sadece bende değil bir çok yerde karşılaştığım kodlarda var. Yani tipik bir durum. Bugün, hataları kontrol etmek istediğiniz her fonksiyonda her seferinde aynı değişkeni bildirmenin mantıklı olmadığını düşündüm. Bir kez global olarak ilan etmenin ve init'te başlatmanın daha kolay olacağı sonucuna vardım. Bunun gibi bir şey:
Daha sonra, zaten bir değeri olduğunu bilerek, kullanıcı tanımlı işlevlerde err değişkenini çağırmanız gerektiğinde. Aslında GetLastError () son hatanın kodunu verir, yani her fonksiyonda hata kodunun görüntülenmesinden ve GetLastError ()'un çağrılmasından sorumlu olan bu err değişkeni tüm hesaplamaların sonunda çağrılırsa, o zaman her şey doğru olacak, değil mi?
Ancak diğer yandan, bir işlevin sonunda (uzman kod yürütme zinciri boyunca) çağırmazsanız, değişken sıfıra sıfırlanmaz ve bu, eğer bir hata varsa, yanlış yürütme ile tehdit eder. önceki kod yürütme zinciri, ancak şu anki kodda değil, ANCAK son hata kodu döndürülür... ve onu sıfırlamak için bu GetLastError () işlevini çağırmanız gerekir. Onlar. her şey çağrılmış olup olmamasına bağlı. Her yerde böyle olacağına dair bir kesinlik yoksa, güvenli oynamak ve her seferinde sıfırlamak daha kolay, değil mi?
Global düzeyde err bildirebilir, ardından GetLastError() öğesini çağırmadan önce start() içinde sıfıra ayarlayabilirsiniz, örneğin:
1) neden int err=0 bildirilirken hemen başlatılmıyor ?
2) kontrol etmedi, ancak belgelerin dediği gibi, hata GetLastError () işlevi kullanılırken otomatik olarak sıfırlanan bazı değişkenlerde saklanıyor,
ve ayrıca bazı işlevleri kullanırken her zaman değişir (çoğunlukla terminal olanlar)
3) bu nedenle GetLastError (), OrderSelect'te var olmayan bir bilet numarasına eriştikten sonra 0 değerini verdi:
" Kalan işlevler hiçbir koşulda last_error değişkeninin değerini değiştirmez. ................., OrderSelect , ............. .... ... "
Global düzeyde err bildirebilir, ardından GetLastError()'u çağırmadan önce start()'ta sıfıra ayarlayabilirsiniz, örneğin:
o zaman söve zaten mantığa göre çıkacaktır. Değilse , GetLastError() sürekli olarak çağrılır (teorik olarak her kullanıcı tanımlı işlevin sonunda).
Bazen daha sık araman gerekir
Victor (hoz), son hatayla derdini anlamıyorum.
Hataları işlemek için bir işlev bildirin ve gerektiğinde onu çağırın. Her şey yerel olacak ve her yerde kullanılabilecek.
Victor (hoz), son hatayla ilgili sıkıntılarını anlamıyorum.
Hataları işlemek için bir işlev bildirin ve gerektiğinde onu çağırın. Her şey yerel olacak ve her yerde kullanılabilecek.
Anlaşılabilir. Ancak bu işlev benim durumumda gerekli olduğunda çağrılacak, yani. bir hata olup olmadığını kontrol etmek istediğimde. Ancak daha önce bir yerde bir hata varsa ve o anda orada değilse, önceki hata döndürülür, bu daha öncedir.Sonuçta, Vadim işlevinizde LastError değişkeni GetLastError() çağrılarak sıfırlanmaz . mesele bu..
Anlaşılabilir. Ancak bu işlev benim durumumda gerekli olduğunda çağrılacak, yani. bir hata olup olmadığını kontrol etmek istediğimde. Ama daha önce bir yerde bir hata varsa ve o anda orada değilse, o zaman önceki hata döndürülür, bu daha önceydi.Sonuçta, Vadim işlevinizde, GetLastError() çağrılarak LastError değişkeni sıfırlanmaz . mesele bu..
Sıfırlanması gerekmez. Fonksiyonlardan sonra her yerde hataları kontrol etmek bir alışkanlık olmalıdır. Yine de bir aramanın bağlantısının kesilmesi gerekiyor. Savaş modunda yavaşlamamak için. Onlar. böyle bir hata ayıklayıcı.
Bir istisna, elbette, karar vermek için analiz edilmesi gereken hatalar içindir.
Anlaşılabilir. Ancak bu işlev benim durumumda gerekli olduğunda çağrılacak, yani. bir hata olup olmadığını kontrol etmek istediğimde. Ancak daha önce bir yerde bir hata varsa ve o anda orada değilse, o zaman önceki hata döndürülür, bu daha önce olmuştur.Sonuçta, Vadim işlevinizde, GetLastError() çağrılarak LastError değişkeni sıfırlanmaz . mesele bu..