"10 dakikada MQL5 için DLL kütüphanesi nasıl yazılır ve veri alışverişi yapılır?" makalesinin tartışılması - sayfa 6
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
Kullanmak char yerine wchar_t
wchar_t zaten geçti, yardımcı olmuyor. Sorun mql'nin kendisinde yatıyor.
Bu kod nedir? Bir işaretçiyi kopyalamak, sadece adresi içeren 4 baytlık belleği kopyalamaktır.
Bu durumda, (MQL5 programında) gerekli arabelleği alıcı dizgede tahsis etmeye önceden dikkat ederseniz, memcpy size yardımcı olabilir.
Bu kod nedir? Bir işaretçiyi kopyalamak, sadece adresi içeren 4 baytlık belleği kopyalamaktır.
Bu durumda, (MQL5 programında) alıcı dizgede gerekli arabelleği tahsis etmeye önceden dikkat ederseniz, memcpy size yardımcı olabilir.
Evet ve işte işaretçi. Bu kod mql4'te iyi çalışıyor. mql5'e geçişle değil.
Buradaki herkes tavsiye veriyor, ancak en az bir kişi mql5'ten bir dll işlevine bir dizenin nasıl geçirileceğine dair gerçekten çalışan bir örnek gösterdi?
...
Soru
Sorun nedir? MQL'den dll'ye bir dize insanca nasıl geçirilir?
1) Mesaj için teşekkürler. Hata düzeltildi. Güncellemeleri bekleyin.
2) Size wchar _t hakkında doğru bir şekilde bilgi verildi - MQL5'teki dizeler unicode'dur
3) "Görsel hata ayıklamayı kontrol ederken" ne anlama geliyor?
4) Şu şekilde doğru şekilde kullanın:
Benim gibi sözde programcılara yardım ettiğiniz için teşekkür ederim. :) Örneğiniz durumuma biraz açıklık getirdi.
Canlandırdıktan sonra, bir dizgiyi wchar_t'den eski güzel karaktere dönüştürmek için bir işlev yazmaya (ve buna kimin ihtiyacı varsa) karar verdim. Bu fonksiyon, char tipini kullanan projelerde çok fazla koda sahip olanlar tarafından ihtiyaç duyulabilir. Ve MQL5 yalnızca wchar_t'yi geçtiğinden, girişte dönüştürmek, dll kodunun yarısını yeniden yazmaktan daha kolaydır.
Benim gibi sözde programcılara yardım ettiğiniz için teşekkür ederim. :) Örneğiniz durumuma biraz açıklık getirdi.
Canlandırdıktan sonra, bir dizgiyi wchar_t'den eski güzel karaktere dönüştürmek için bir işlev yazmaya (ve buna kimin ihtiyacı varsa) karar verdim. Bu fonksiyon, char tipini kullanan projelerde çok fazla koda sahip olanlar tarafından ihtiyaç duyulabilir. Ve MQL5 yalnızca wchar_t'yi geçtiğinden, girişte dönüştürmek, dll kodunun yarısını yeniden yazmaktan daha kolaydır.
Dizeleri char * olarak kabul eden DLL işlevleri, elbette, char dizisinin ilk öğesine bir işaretçi alır. Yani, bir MQL5 programında bu tür işlevlerin içe aktarımını tanımlarken, karakter dizisi parametresi olarak bir Char dizisi kullanılmalıdır.
Bu tür durumlar için, ulusal alfabedeki dizeleri doğru şekilde dönüştüren StringToCharArray işlevini sağladık. wcstombs işlevi bunu her zaman doğru şekilde yapmaz.
Makale ilginç ve kullanışlıdır.
1) Kaynak kodun eklenmiş olması harika. Heh, derlenmiş DLL nerede? Megaproger'ın onu yaratmasının bir sorun olmadığı açıktır.
Ve eğer Mega değilsem ve bir proger değilsem?! :)
2) Makale MS derleyicisini kullanır. Ve ben onunla arkadaş değilim. :) Bende BC++ var. Onun için keskinleştirilmiş kaynak kodlarını ortaya koymak mümkün mü?
(IMHO, MS ve BC için kaynak kodlarını her zaman yüklemek muhtemelen daha iyidir - bunlar önde gelen iki şirkettir, ancak kaynak kodlarını yazma stilleri farklıdır).
Kullanıcıları bir kez daha sinirlendirmemek için potansiyel olarak tehlikeli kod (DLL) yüklememeye çalışıyoruz. Ayrıca, bu sadece bir test durumudur.
Ne yazık ki, elimizde Borland C++ derleyicisi yok. Kendiniz uyarlamaya çalışın - birden fazla kod sayfası var.
yu-sha :
Geliştiriciler kendilerine çok mu yüksek hedefler belirliyor?
Ve her şey uzun zaman önce yapıldıysa (C, Delphi, ...) neden tekerleği yeniden icat edelim?
Doğru görüneni değil, kârlı olanı yapmalıyız. Çünkü karlılık doğru olandır. Ve bu durumda (MT5+MQL5+hizmetleri) MetaQuotes için çok büyük bir faydadır (onlarca veya yüzlerce kez karşılığını verecektir) ve tüccarlar için çok büyük bir faydadır. Sadece hemen değil.
Geniş bakmak ve en az 5 yıl ileriye bakmak her zaman iyidir. MetaQuotes yaptı.