long sorusu üzerine - yapabilirsiniz, ancak int'i bir karakter dizisinden böyle bir şeyin 4 baytlık alıcısı olarak kullanırsanız hiç gerekli değildir. (yani tam olarak & işaretçisi ile geçersiniz).
nasıl öğrenilir - burada yapabilirsiniz http://forum.ixbt.com/topic.cgi?id=26:37968
long sorusu üzerine - yapabilirsiniz, ancak int'i bir karakter dizisinden böyle bir şeyin 4 baytlık alıcısı olarak kullanırsanız hiç gerekli değildir. (yani tam olarak & işaretçisi ile geçersiniz).
Nasıl öğrenilir - burada http://forum.ixbt.com/topic.cgi?id=26:37968 olabilir
İyi günler. Makale nispeten uzun zaman önce yazılmış olmasına rağmen, kütüphane dll'leri ile veri alışverişi konusu hala geçerli. Ben de yakın zamanda belirli bir işlevselliği uygulama ihtiyacıyla karşı karşıya kaldım ve bir seçim yapmak zorunda kaldım: kendi dll'imi yazmak veya hala kütüphane dll'lerini kullanmaya çalışmak. İkincisi lehine bir seçim yaptım ve doğal olarak yapıları aktarmanın ve verileri geri almanın zorluğuyla karşılaştım. Bu makaleyi okuduktan sonra, bence çok karmaşık olan bazı noktaları tam olarak kavrayamadım. Bu makalede, bir yapıyı harici bir ortama aktarırken, kütüphane fonksiyonunun sonucu koyacağı ve daha sonraki çalışmalar için dönüştürmemiz gereken tahsis edilmiş bir bellek alanı olarak bir dizi kullanılması önerilmektedir. Bu alanda çok az deneyimim var ve belki de gerekçem amatörce görünecek, ancak yine de akıllı insanların beni düzelteceği umuduyla fikrimi ifade edeceğim. https://www.mql5.com/tr/articles/1543 adresindeki eski bir makalede bahsedilen basit bir örneği ele alalım.
Bu makale, kütüphane dll'leri aracılığıyla dosya arama konusunu ele almaktadır. Ayrıca, gerekli boyuttaki bir diziye bir işaretçi geçirmeyi ve daha sonra bu diziden gerekli verileri çıkarmayı önermektedir.
Özünde bir yapı nedir? Aynı bellek bölümüdür. Şimdi yapıları geçirme ve verileri alma yaklaşımını değiştirmeye çalışalım:
// Veri türü tanımlarını bildirme #define DWORD int #define TCHAR short // Unicode ile çalışacağımız için bu türü ayarlayın #define MAX_PATH (260) // FILETIME yapısını deklare edin struct FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; }; // Arama sonuçlarının veri yapısını beyan edin struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; }; // Veri türlerini bildirerek WinAPI yapılarını hiçbir değişiklik yapmadan kopyalarız // Kütüphane işlevini içe aktar #import "kernel32.dll" int FindFirstFileW(string path, _WIN32_FIND_DATA& answer); #import //+------------------------------------------------------------------+ //| Uzman başlatma işlevi| //+------------------------------------------------------------------+ int OnInit() { // Önceden oluşturulmuş yapının türüyle bir değişken oluşturun _WIN32_FIND_DATA data; // Yapımıza ve aslında ayrılan belleğe bir işaretçi geçirerek kütüphane işlevini çağırın int handle = FindFirstFileW(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\*.mq5", data); if(handle!=-1) { // Ek bir dönüştürme yapmadan yapımızın alanlarına erişerek arama sonucunu görüntüleyin Print("Dosya adı bulundu: ", ShortArrayToString(data.cFileName)); Print("Geçici olarak bulunan dosya adı: ", ShortArrayToString(data.cAlternateFileName)); Print("Bulunan dosya boyutu: ", data.nFileSizeLow); } //--- return(INIT_SUCCEEDED); } //+-

- 2008.07.15
- MetaQuotes Software Corp.
- www.mql5.com
Özünde bir yapı nedir? Aynı bellek bölümüdür. Şimdi yapıları geçirme ve veri alma yaklaşımını değiştirmeye çalışalım:
Kodunuzu editör üzerinden doğru bir şekilde yapıştırdım
Kodunuzu editör aracılığıyla doğru şekilde yapıştırdım
Çok teşekkürler! Kodu burada nasıl doğru biçimlendireceğimi henüz bulamadım. (((

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale Getting Rid of Self-Made DLLs yayınlandı:
MQL5 dil işlevi, görevleri yerine getirmek için yeterli değilse, bir MQL5 programcısı ek araçlar kullanmak zorundadır. Başka bir programlama diline geçmeli ve bir ara DLL oluşturmalıdır. MQL5, çeşitli veri türlerini sunma ve bunları API'a aktarma olanağına sahiptir, ancak ne yazık ki, MQL5, kabul edilen işaretçiden veri ayıklama ile ilgili sorunu çözemez. Bu makalede, tüm "i"leri işaretleyeceğiz ve karmaşık veri türlerini değiştirmenin ve bunlarla çalışmanın basit mekanizmalarını göstereceğiz.
Diyagram 1'de, bazı veri türlerinin karşılaştırmalı boyutları gösterilmiştir.
Verileri bir bellek alanından diğerine kopyalamak için Memcpy işlevi gereklidir.
Şekil 2'de, dört baytın kopyalanması gösterilmiştir.
Yazar: ---