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
Ben mega programcı değilim. Ama evrenselliğin nerede olduğunu anlamıyorum? uchar evrensel olamaz çünkü kullanıcıyı sınırlar, yani: uchar sadece pozitif değerler içindir. Minimum değer sıfır, maksimum değer 255'tir.
uchar değerinin ötesindeki herhangi bir veri, uchar'ın maksimum veya minimum değerine eşit olur.
Bu söylediklerimden yola çıkarak en baştan "int veya double nasıl geçilir" diye sormuştum. Anlayamadım şef.
Tamam, küçük bir tur atalım.
1. char ve uchar örneğini ele alalım. Her iki değişken de 1 byte boyutunda.
Bu, birbirlerine atama yaparak bayt kaybetmediğimiz ve dolayısıyla orijinal verinin değerini kaybetmediğimiz anlamına gelir.
şu ifadelere bakın
Aynı durum long/ulong, int/uint için de geçerlidir.
Yani, bayt cinsinden aynı boyuttaki tamsayı tipindeki değişkenler, bayt cinsinden bilgi kaybı olmadan birbirlerine aktarılabilir.
Bu arada, bu, Uzman Danışman MAGIC sayılarını ulong türünde kabul etse de, bunları programlarınızda her zaman long, yani işaretli biçimde ayarlayabileceğiniz ve okuyabileceğiniz anlamına gelir
2. Şimdi <some_type> ve uchar'a bakın.
Örneğin int. Bu, bellekteki bu 4 baytın kolayca uchar[4] dizisi olarak gösterilebileceği anlamına gelir
eğer bir double varsa( 8 bayttır), uchar[8] dizisi olarak gösterilebilir
Bu aynı zamanda dizelerin baytları için de geçerlidir - MQL'de ushort dizisidir.
ve buna göre herhangi bir türde bir yapınız varsa, herhangi bir veriyi kolayca uchar dizisi olarak sağlayabilirsiniz.
MQL5 sürümünde kullanılan baytlarla ilgili bu temel kavramlardır - bellekteki sanal dosyalar CFastFile. Herhangi bir veriyi uchar dizisi belleğinde saklar.
Yani, harici programlarla veri alışverişi yapmanız gerekmiyorsa. Veya başka bir programdan veri akışı şeklinde veri alırsınız - örneğin, İnternet sayfalarını okumak ve bu verilerin tümünü diske kaydetmeniz gerekmez, o zaman Windows eşlemesi yerine CFastFile kullanmak daha iyidir.
ve son olarak, https://www.mql5.com/tr/articles/364 adresini tamamen birleştirmek için.
MT5 642 Win7 64, anladığım kadarıyla çalışmıyor, sonra
hmem=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,size+HEAD_MEM,path); // bellek nesnesi oluştur
1400 hatası alıyorum,
ama Vista 32 çalışıyor.
bunun nedeni 32 ve 64 sistemlerdeki farklı işaretçi boyutlarıdır
Bu kütüphane dosyası 32-bit terminal için hazırlanmıştır.
Ancak 64 bitlik bir terminal kullanıyorsanız, bir işaretçinin ima edildiği tüm yerlere (örneğin PBYTE, LPVOID, vb. ve tüm memcpy türlerine) 8 bayt uzun tip koymalısınız.
ama nasıl bağlanabilirim
Bu dışarı verir
ve bu iki girinti birbiri olmadan da çalışır.
ama nasıl bağlanabilirim
Bu dışarı verir
ve bu iki ekleme birbiri olmadan çalışır.
bağlam çözünürlüğünü kullanmayı deneyin ::
Teşekkürler
Sadece standart kütüphaneyi değiştirmek zorunda kaldım.
Bunun iyi bir şey olduğunu sanmıyorum....Teşekkür ederim.
Sadece standart kütüphaneyi değiştirmek zorunda kaldım.
Bunun iyi bir şey olduğunu sanmıyorum.Anlamıyorsunuz.
Size kernel32::GetLastError'dan bahsettim. Benim kodumda nasıl uygulandığına bakın.
Bu seçenekten memnun değilseniz,örneğin int parametresi ile kernel32 GetLastError'dan import bildirin. çağırırken bir fark olmayacak, ancak çakışmayı önleyeceksiniz.
anlamıyorsun.
Size kernel32::GetLastError'dan bahsettim. benim kodumda nasıl uygulandığına bakın.
Bu seçenek size uymuyorsa,örneğin int parametre ile kernel32 GetLastError'dan importedin. çağırırken bir fark olmayacak, ancak çakışmayı önleyeceksiniz.
Belki de doğru ifade edemiyorum.
ama yapmak zorundayız
Çünkü burada standart kütüphane eklenmiş kodunuzun bir örneği var.
Derlerken aynı hataları veriyor.
olyakish, sana yazdıklarımı tekrar dikkatlice oku.
Eğer bağlamdan tatmin olmadıysanız, size tam olarak ne demek istediğimi söylüyorum.
anlamıyorsun.
Size kernel32::GetLastError'dan bahsettim. benim kodumda nasıl uygulandığına bakın.
Eğer bu seçenek size uymuyorsa, kernel32 GetLastError'danörneğin int parametresi ile importedin. çağırırken bir fark olmayacak, ancak çakışmayı önleyeceksiniz.
Kernel32::GetLastError kod içinde bağlamı ile çağrıldığında, derleyici GetLastError'ı bağlamsız olarakçağıracaktır.
Programcıların standart WinAPI fonksiyonlarının MQL-analoglarını bağlam ile çağırmayı bir kural haline getirmeleri yeterlidir. Böylece sonraki değişikliklerde herhangi bir sorun yaşanmayacaktır.
Ve böylece standart incili düzeltirsiniz ve güncellenir, bu yüzden tekrar düzenlemeniz gerekir.
Ve böylece standart İncil'i düzeltirsiniz ve güncellenir, tekrar düzenlemeniz gerekir.