Hatalar, hatalar, sorular - sayfa 1017
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
Kısacası, bir işlevin uygulamasını .mqh'de tanımlamak ve herhangi bir .ex5'te sorunsuz kullanmak imkansızdır.
:)
Yapabilir. Ancak, bir .ex5'ten başka bir .ex5'in işlevlerini çağırdığınızda, her ikisinde de aynı ada sahip bir işlev bulunmasına rağmen, ad alanının tam gösterimine dikkat etmelisiniz. Yani, aynı :: In () teorik olarak sorunu çözmelidir. Ve eğer çözmezse, bu servis masasındadır, çünkü bu düzeltilmesi gereken bir hatadır.
ServiceDesk'in cevabı üzerinde duralım:
"1.mq5 derlenirken, B() işlevi içinde hangi işlevin çağrılması gerektiği net değil,
içe aktarılan A() veya dışa aktarılan A() - çünkü derleyici aynı işlevi kastettiğinizi anlamıyor"
Formda haklılar - ancak istenirse, derleyiciye bunun aynı işlev olduğu söylenebilir (ve söylenmelidir), çünkü derleme sırasında modülün adını tekrarlıyorum - mevcut (#import ile belirtilir).
Ayrıca, önce :: bir yere koyar ve derlerseniz, sonra siler ve :: başka bir yere koyarsanız, o zaman her şey çalışır, ancak itiraf etmelisiniz - bu çok uygunsuz ve bu tür 10-15 zorunlu permütasyondan sonra #define'a geçtim
ServiceDesk'in cevabı üzerinde duralım:
"1.mq5 derlenirken, B() işlevi içinde hangi işlevin çağrılması gerektiği net değil,
içe aktarılan A() veya dışa aktarılan A() - çünkü derleyici aynı işlevi kastettiğinizi anlamıyor"
Formda haklılar - ancak istenirse, derleyiciye bunun aynı işlev olduğu söylenebilir (ve söylenmelidir), çünkü yine, modül adı derleme sırasında kullanılabilir (#import'ta belirtilir).
Bu tür ipuçları için bir bağlam çözümleme operatörü "::" vardır, ancak bu durumda modül (dosya) adı da eşleştiğinden geçerli değildir.
Tavsiye yeterlidir - programın yapısını değiştirmek için.
Ayrıca, önce bir yere :: koyar ve derlerseniz ve sonra silip :: başka bir yere koyarsanız, o zaman her şey çalışır, ancak itiraf etmelisiniz - bu çok elverişsizdir
ve bu tür 10-15 zorunlu permütasyondan sonra #define'a geçtim
En iyi çözüm değil. Parametreli tanımlar, yalnızca tür denetimi istenmediğinde veya parametreler için "ayrıntılı" metin parçaları kullanıldığında yararlıdır. Bir satır içi işlevin yerine geçen tanım, programın sağlığı için kesinlikle kötüdür.
--
Senin durumunda, .ex5 kitaplıklarını kullanmayı reddederdim. Ve her şey bir düdükle çalışacaktı. Bunların pratik kullanımı sadece uygulamayı gizlemek (satarken) ve diğer durumlarda onlardan bir fayda görmüyorum.
satılık mı yazıyorsun
satılık mı yazıyorsun
Kendin için.
.ex5 olmadan çalışmaz. Ayrıca F( string& [] ), bir şekilde .dll'ye uymuyorlar :)
Muhtemelen onları bir şekilde ayırıcıdan geçirebilirsin, ama henüz denemedim
Sadece MQL5'te satır içi işlevler (formda) yoktur ve bunların yerine parametrik makrolar kullanıyorum, bu genel olarak tamamen doğru değil, çünkü tür kontrolü yok
Yine de emnip, derleyici ifadeleri optimize etmez, bu nedenle hız açısından ek bir eksi olacaktır. Daha iyi kontrol et.
Satır içi konuşmaktan bahsetmişken, işe yarıyor. Bu nedenle, hata ayıklayıcıyla ilgili sorunlar hala vardı.
Satır içi konuşmaktan bahsetmişken, işe yarıyor. Bu nedenle, hata ayıklayıcıyla ilgili sorunlar hala vardı.
Derleyici düzeyinde bu şekilde çalışır. Ve dil düzeyinde istiyorum. Yukarıda bir örnek verdim - anlaşılmaz bir "derleyici atlaması" yoluyla - her şey çalışıyor, ancak doğrudan - ek hareketlere ihtiyaç var, bazen önemli, çünkü tavsiye ettiğiniz gibi, elbette açıklamasını ve uygulamasını dahil etmemek mümkündür. bir dosyada aynı işlev, ancak daha sonra 10 tam teşekküllü .mqh zaten 100 daha küçük .mqh'ye bölünmüştür
Henüz hız peşinde değil. Önemli olan kolaylık ve kod miktarının katlanarak artmaması .
MQL5'te #if #else analoglarını kullanma ihtiyacıyla bile karşılaştım (şimdilik çarpık, ancak bazı yerlerde çalışıyor)
Henüz hız peşinde koşmadım. Ana şey kolaylık ve kod miktarının katlanarak artmaması.
A100 :
.ex5 olmadan çalışmaz. Ayrıca F( string& [] ), bir şekilde .dll'ye uymuyorlar :)
....
Tanrı.. .. :)
.ex5 kitaplıkları yerine DLL'lerin kullanılmasını önermedim. Yalnızca bir sürü .mqh ve bir yürütülebilir .mq5, başka bir şey değil.
Yalnızca çok-çok .mqh ve bir yürütülebilir .mq5, başka bir şey yok