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
Eski Ansi dize dizilerini simüle etmek dağınıktır, ancak yine de mümkündür. (Bu, özellikle dizinin içeriğini değiştirerek verileri MQL4'e geri iletirse, DLL'nin iyi durumda olmasına bağlı olacaktır. Bunu daha gerçekçi bir şeye karşı değil, yalnızca alttaki örnek C++ koduna karşı test ettim. MySql kütüphanesi gibi.)
Örneğin, yukarıdaki kod, bir dizideki her dize için bir mesaj kutusu yapan ve ardından MT4'e dönmeden önce dizeyi tersine çeviren aşağıdaki DLL ile çalışır:
Snippet'lerinizin ne kadar yararlı olduğunu açıklayamam. Çok teşekkür ederim! Devam ettim ve bahsettiğiniz teknikleri ve EAX MySQL kitaplığında (MQL5) bulduğum teknikleri kullanarak libmysql.dll (ANSI) ile iletişim kuran saf MQL4'te (UNICODE sürümü için) bir MySQL sarıcı yazdım.
Oradaki koduma bir göz atabilir ve geliştirilebileceğinden oldukça emin olduğum için iyileştirebileceğim veya katkıda bulunabileceğim şeyler hakkında bana bilgi verebilirseniz gerçekten minnettar olurum.
gchrmt4,
Lütfen bana bir DLL işlev çağrısı yoluyla bir dizeyi nasıl geçirebileceğimi gösterebilir veya beni bir örnek koda yönlendirebilir misiniz?
Aradığım şey, aşağıdaki gibi bir arama yapabileceğime dair onay:
#içe aktarmak
int call_a_string_function(string this_is_a_string);
#içe aktarmak
...
...
string foo1 = "bu bir string";
int retruncode = call_a_string_function(foo1);
o zaman yukarıdaki fonksiyon için C kodu nasıl görünür? Ben sadece rutin örneği arıyorum.
Örneğin
int call_a_string_function(char *this_is_a_string);
vb
Bazı insanlar bir dizi veya karakter dizisi vb. kullanmamızı söylüyor. Biraz açıklama arıyorum. Bellek sızıntısından vb. bahsettiğiniz gibi en iyi yaklaşımla ilgili basit bir örnek.
Saygılarımızla
gorik
gchrmt4,
Lütfen bana bir DLL işlev çağrısı yoluyla bir dizeyi nasıl geçirebileceğimi gösterebilir veya beni bir örnek koda yönlendirebilir misiniz?
Aradığım şey, aşağıdaki gibi bir arama yapabileceğime dair onay:
#içe aktarmak
int call_a_string_function(string this_is_a_string);
#içe aktarmak
...
...
string foo1 = "bu bir string";
int retruncode = call_a_string_function(foo1);
o zaman yukarıdaki fonksiyon için C kodu nasıl görünür? Ben sadece rutin örneği arıyorum.
Örneğin
int call_a_string_function(char *this_is_a_string);
vb
Bazı insanlar bir dizi veya karakter dizisi vb. kullanmamızı söylüyor. Biraz açıklama arıyorum. Bellek sızıntısından vb. bahsettiğiniz gibi en iyi yaklaşımla ilgili basit bir örnek.
Saygılarımızla
gorik
Evet, bunun için teşekkürler. Gerçekten iyi sunulmuş ve beklediğim. Ancak, dizelerle ilgili sorunlarım var gibi görünüyor.
Girdi olarak bir dize değerini kabul etmek ve bir dosyaya yazmak için C'deki bu belgeden bir örnek oluşturdum, örneğin aşağıda:
Değerleri kontrol etmek için bir dosyaya yazarım.MQL aşağıdaki gibidir:
Dosya çıktısı aşağıdaki gibidir:Bunlar dize değerleridir: R fooooooooooo1
Yalnızca iletilen dizenin "R" veya ilk karakterini mi döndürür? "fooooooooooooo1", yalnızca doğru yazdırıp yazdırmadığımı kontrol etmek için eklendi.
Neyi yanlış yaptığım hakkında bir fikri olan var mı?
Evet, bunun için teşekkürler. Gerçekten iyi sunulmuş ve beklediğim. Ancak, dizelerle ilgili sorunlarım var gibi görünüyor.
Girdi olarak bir dize değerini kabul etmek ve bir dosyaya yazmak için C'deki bu belgeden bir örnek oluşturdum, örneğin aşağıda:
<kaldırıldı>
Neyi yanlış yaptığım hakkında bir fikri olan var mı?
Sorun MQL4'te değil, C kodunuzda.
printf() içindeki %s, "Ansi dizesi" anlamına gelir. %ls kullanmanız gerekiyor
Evet, bunun için teşekkürler. Gerçekten iyi sunulmuş ve beklediğim. Ancak, dizelerle ilgili sorunlarım var gibi görünüyor.
Girdi olarak bir dize değerini kabul etmek ve bir dosyaya yazmak için C'deki bu belgeden bir örnek oluşturdum, örneğin aşağıda:
Değerleri kontrol etmek için bir dosyaya yazarım.MQL aşağıdaki gibidir:
Dosya çıktısı aşağıdaki gibidir:Bunlar dize değerleridir: R fooooooooooo1
Yalnızca iletilen dizenin "R" veya ilk karakterini mi döndürür? "fooooooooooooo1", yalnızca doğru yazdırıp yazdırmadığımı kontrol etmek için eklendi.
Neyi yanlış yaptığım hakkında bir fikri olan var mı?
Merhaba,
Lütfen kod gönderirken SRC butonunu kullanın. Teşekkür ederim.
Bu sefer sizin için düzenledim.
Merhaba,
Lütfen kod gönderirken SRC butonunu kullanın. Teşekkür ederim.
Bu sefer sizin için düzenledim.
Üzgünüm çocuklar, burada yayınlamak için gerçekten yeni.
Katkınız için teşekkürler, gerçekten minnettarım.
Bunun anlamı, mevcut tüm örneklerin doğru olmadığıdır. Biri unicode kullanmak zorunda. DLL'leri programlamada çok yeni olduğum için yeni başladım, bu yüzden verilen örneklere büyük ölçüde güvendim. Ayrıca 600 yapıyı aynı anda kullanmaya başladım.
Bunu uzun süredir yapıyorsanız, durumun tamamen farkında olduğunuzu hayal ediyorum. Ne yazık ki değilim, bu forumda sadece bilgi ve tavsiye parçaları alıyorum.
Cahilliğim için özür dilerim.
saygılar ve teşekkürler
Neyin daha iyi yapılacağına dair herhangi bir önerisi olan varsa lütfen bana bildirin.
tekrar teşekkür ederim.
Neyin daha iyi yapılacağına dair herhangi bir önerisi olan varsa lütfen bana bildirin.
tekrar teşekkür ederim.