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
uchar - İmzasız Karakter, bunu neden bir döngü için kullanasınız? bana mantıklı gelmiyor. . . bir int kullanın. Ulonglarla çalışacaksınız, yeni bir tarihsaati budur. . . ve gelecekte hiç düşünmeden daktilo yazdığınızda uyarılacaksınız. . . uyarıyla ilgilenin veya görmezden gelin. Yine de en iyisini ummayın, şimdi yaptığınız gibi yapın, öğrenin ve anlayın.
Stackoverflow'tan gönderdiğiniz şeyler bana mantıklı geliyor, bence bu iyi bir tavsiye.
uchar, sorum küçük değişken türlerinin kullanımıyla ilgili olduğu için sadece bir örnekti. uchar, 0 ile 255 arasında 1 baytlık bir pozitif değerdir, bu nedenle 0 ila 100 arasındaki bir döngü için 1 baytlık uchar'ı kullanabilirsiniz.
Bir işlevden döndürülen bir değeri kaydetmeniz gerekiyorsa ve söz konusu işlev bir uchar döndürürse, döndürülen değeri kaydetmek için bir uchar değişkeni kullanın. . . orijinal mql4 ile bu bir sorun değildi, yeni mql4 ile daha çok bir sorun olacak.
Soruyu sorduğumda neden isteyeceğimi bilmiyordum, bu yüzden soruyu sordum lol ...
8 bitlik bir değişken türünün 32 bitten daha hızlı mı yoksa daha yavaş mı yoksa aynı mı olacağını bilmiyordum, 8 bitlik bir değerin daha az RAM mi yoksa daha az disk alanı mı kullanacağını bilmiyordum. Şimdi bu küçük değişken türlerine sahip olduğumuzu görünce, bunları sadece 32 bit tamsayılara bağlı kalmak yerine, kod bloğunun gereksinimlerine uyacakları zaman kullanmanın artılarını ve eksilerini bilmek istedim.
32 bitlik bir işletim sisteminin aynı anda dört 8 bitlik değeri işleyebileceğini düşündüm ama bilmiyordum. Görünüşe göre öyle değil. Bu, 64 bit işletim sisteminin neden daha fazla RAM'e erişebilmesi dışında 32 bitten çok daha hızlı olmadığını açıklar. Bunu çoğu zaman merak etmiştim.
Çözümünü bulamadığım bir sorum var.
void& nasıl kullanılır? Yani, bir DLL'ye herhangi bir işaretçi göndermem gerekirse. Yardım dosyasında bu void türünü kullanan işlevler var, ancak onu kaynakta herhangi bir yere yerleştirirsem derlenmez. Şablonu geçici bir çözüm olarak kullanmaya çalıştım, ancak #import deyiminde şablon yasaklandı.
Tek tipler için yapıyı yönettim, ancak açık türü belirtmedikçe DLL'ye geçiş void& dizi işaretçisini uygulayamıyorum.
Bir DLL'ye yapı dizisini geçirmek için herhangi bir sınırlama var mı?
MT4Structure'ın basit bir yapı olduğunu varsayalım .
kernel32.dll dosyasını içe aktardıktan sonra, tek bir yapı gayet iyi çalışıyor:
ama yapı dizisini kabul ederek işe giremiyorum. Bu bildirime parametre olarak gönderilirse, derleyici MT4Structure&[] ile derlenmeyecektir:
Bir DLL'ye yapı dizisini geçirmek için herhangi bir sınırlama var mı?
Böyle bir şeyle ilgili bir sorun göremiyorum:
Beklendiği gibi çalışır (MT4 ve DLL'de farklı varsayılan yapı hizalamasına izin vermeniz şartıyla).
(BTW, şu anda bir MQL4 bool'un dahili temsilinin ne olduğundan emin değilim, ancak Win32 işlevlerini int döndüren olarak bildirmeyi tercih ederim. Win32 işlevleri, bir C++ bool yerine bir BOOL döndürür. BOOL, bir Windows makrosudur. değeri 1/0 olan 4 baytlık bir tamsayı için, C++ bool tek bir bayttır.MT4'e, işlevler aslında dört bayt döndürürken işlevlerden tek bir baytlık dönüş değeri beklemesini söylerseniz, yapabilirsiniz - yine de bu pek olası değil - yığın bozulmasıyla sonuçlanır.)
void& nasıl kullanılır? Yani, bir DLL'ye herhangi bir işaretçi göndermem gerekirse.
Sorunuzun ne olduğundan tam olarak emin değilim. Örneğin, Win32 API'sinin belgeleri, "bu, herhangi bir şey için herhangi bir işaretçi türünü kabul eder; Win32 işlevi , bellek bloğunuzun ne olduğu ile ilgilenmez" anlamına gelen void* kullanır.
Sorunuzun ne olduğundan tam olarak emin değilim. Örneğin, Win32 API'sinin belgeleri, "bu, herhangi bir şey için herhangi bir işaretçi türünü kabul eder; Win32 işlevi, bellek bloğunuzun ne olduğu ile ilgilenmez" anlamına gelen void* kullanır.
Aynen öyle. Ancak MQL4 ile pek mümkün değil gibi görünüyor ve #import bloğunda bir şablon kullanılmasına izin verilmiyor. Bu nedenle, winapi ile ek yapı kullanmak, her yeni tür gerektiğinde #import bildirimlerinin manuel olarak güncellenmesine dönüşür. Bu benim için oldukça rahatsız edici, çünkü amacım ithalatı tek bir yerden yönetmekti.
Aynen öyle. Ancak MQL4 ile pek mümkün değil gibi görünüyor ve #import bloğunda bir şablon kullanılmasına izin verilmiyor. Bu nedenle, winapi ile ek yapı kullanmak, her yeni tür gerektiğinde #import bildirimlerinin manuel olarak güncellenmesine dönüşür. Ki bu benim için oldukça rahatsız edici.