Hatalar, hatalar, sorular - sayfa 2575
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
Bellek, mql kodunda şu şekilde tahsis edilir:
mql'deki dize, dll'deki wichar_t* olduğundan, dışarı çıkar ve tahsis edilen belleğe bir işaretçi olarak iletilir.
Ah nasıl gidiyor...
Dize uygulamasını bilmiyorum, yalnızca tahmin edebilirim, ancak hataya bakılırsa, dize çıktığında, yığında 0x00000000 olarak başlatılan bir işaretçi oluşturulur ve dll'deki boş işaretçiyi güvenle kaldırırsınız.
Ah nasıl gidiyor...
Dize uygulamasını bilmiyorum, yalnızca tahmin edebilirim, ancak hataya bakılırsa, dize çıktığında, yığında 0x00000000 olarak başlatılan bir işaretçi oluşturulur ve dll'deki boş işaretçiyi güvenle kaldırırsınız.
Bellek, mql kodunda şu şekilde tahsis edilir:
mql'deki dize, dll'deki wchar_t* olduğundan, dışarı çıkar ve tahsis edilen belleğe bir işaretçi olarak iletilir
Dll'nin kendisini kazın, büyük olasılıkla orada bir şey var. Son zamanlarda verileri mql'den üçüncü taraf C++/C# uygulamalarına aktarıyorum, hiç sorun yaşamadım.
Dll'nin kendisini kazın, büyük olasılıkla orada bir şey var. Son zamanlarda verileri mql'den üçüncü taraf C++/C# uygulamalarına aktarıyorum, hiç sorun yaşamadım.
Dll'de her şey basittir, netlik için gereksizler kaldırılır, fikrin kendisi gösterilir
Sonuç verilerini konsola aktarıyorum, konsoldaki tüm satırlar net bir şekilde boşluklar ve aksaklıklar olmadan gidiyor.
wcscpy(out, data) ile mql'ye iletiyorum sorun başlıyor
Ve elle yazılmış bir test dizisini geçersem
Neden sorun yok.
Hmm, mql'deki dize türü , wchar_t*'ın terminal sıfırını hesaba katıyor mu?
OnTimer() olay yeteneğinin küçük bir uzantısı için öneri
Şu anda OnTimer() olayı, çağrı frekansının EventSetTimer() işlevi tarafından ayarlandığı andan itibaren oluşmaya başlar.
İşte böyle bir danışman olduğu ortaya çıktı:
Böyle bir şey verir:
Bununla birlikte, genellikle, bir sinyalin oluşumunu kontrol etmek için, bir sonraki çubuğun ortaya çıkmasından sonra kontrol etmek yeterlidir.
Ve örneğin, PERIOD_M15 için çubuğun 00:15:00'da görüneceği ve EA'nın yalnızca 00:29:59'da kontrol edebileceği ortaya çıktı.
Onlar. danışmanın başlama saatinden bağımsız olarak az çok istikrarlı ve aynı sonuçlar için,
daha kısa süreler için bir zamanlayıcı ayarlamanız veya ek olarak OnTick() kullanmanız gerekecektir.
Deneyler, bunun strateji test cihazındaki test hızını büyük ölçüde yavaşlattığını göstermiştir.
Teklif:
OnTimer olayının gerçekleşmesi için geri sayımın başlangıç zamanını ayarlamanıza izin verecek bir işlev ekleyin.
Örneğin, yeni bir çubuktan birkaç saniye sonra zamanlayıcı çağrısını ayarlamanıza izin veren bazı EventSetTimerFrom (const datetime SinceDT) işlevi .
Dll'de her şey basittir, netlik için gereksizler kaldırılır, fikrin kendisi gösterilir
Sonuç verilerini konsola aktarıyorum, konsoldaki tüm satırlar net bir şekilde boşluklar ve aksaklıklar olmadan gidiyor.
wcscpy(out, data) ile mql'ye iletiyorum sorun başlıyor
Ve elle yazılmış bir test dizisini geçersem
Neden sorun yok.
Hmm, mql'deki dize türü , wchar_t*'ın terminal sıfırını hesaba katıyor mu?
Ve bu fonksiyon çalışıyor
Ancak eğri, satırın sonunda bir karakter eksik gibi görünüyor, fazladan bir parantez } beliriyor ve sonra kayboluyor.
wcslen(veri)+1
wcslen(veri)+2
Yardım etmedi,
ve sözde herhangi bir sızıntı olmadan hatasız olarak ayrıştırılır
bir mql dizesindeki bir karakterin uzunluğunun veya boyutunun ne olduğu hiç belli değil
dize türünde kesinlikle bir tür hata var
Ve paragraf 3.3'teki en son makalede Dizeleri aktarma ve değiştirme, örnek büyük olasılıkla bir hata yaptı.
Belki de, uçbirim kodunun bir yerinde, mql dize dönüştürmesi, bir işaretçi olmadan aynı şekilde çalışır.
OnTimer olayının gerçekleşmesi için geri sayımın başlayacağı başlangıç zamanını ayarlayın.
EventSetTimer'ı tekrar arayarak kendiniz yapabilirsiniz. Hesapta (Test Cihazında değil) zamanlayıcının değişken olduğunu ve sürekli ayarlama gerektirdiğini unutmayın.
EventSetTimer'ı tekrar arayarak kendiniz yapabilirsiniz. Hesapta (Test Cihazında değil) zamanlayıcının değişken olduğunu ve sürekli ayarlama gerektirdiğini unutmayın.
Teşekkürler, faydalı şeyler!
Bu kadar basit bir anın kutudan çıkan terminalde dikkate alınmaması elbette çok garip.
Ve bu fonksiyon çalışıyor
Ancak eğri, satırın sonunda bir karakter eksik gibi görünüyor, fazladan bir parantez } beliriyor ve sonra kayboluyor.
wcslen(veri)+1
wcslen(veri)+2
Yardım etmedi,
ve sözde herhangi bir sızıntı olmadan hatasız olarak ayrıştırıldı
bir mql dizesindeki bir karakterin uzunluğunun veya boyutunun ne olduğu hiç belli değil
dize türünde kesinlikle bir tür hata var
Ve paragraf 3.3'teki en son makalede Dizeleri aktarma ve değiştirme, örnek büyük olasılıkla bir hata yaptı.
Belki de, uçbirim kodunun bir yerinde, mql dize dönüştürmesi, bir işaretçi olmadan aynı şekilde çalışır.
Dll'de her şey basittir, netlik için gereksizler kaldırılır, fikrin kendisi gösterilir
Çok güzel örnekleriniz var, her şeyi kaldırdılar, UB'yi bıraktılar (dize değişmezlerinin değiştirilmesi) ve herkes telepati yapmalı. Bir tür mantıklı tavsiyeye güveniyorsanız, minimum çalışma kodunu (her iki tarafta da) verin, aksi takdirde sadece gevezelik olur.