"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 8

 
avoitenko :

DLL işlev bildirimi

DLL İşlevi Çağırma

Aynen öyle! Ben sadece bunu yaptım. Teşekkür ederim!
 

Son örnekte, dll'de de değişiklikler yapılmış, anladınız mı?

ondan bahsediyorum

 bool ExcelSetTextCell( int X, int Y, uchar & Value[]);
 

Sakıncası yoksa bana da haber ver. Bir dll var, ona bir metin değeri geçiriliyor, çıktıda string türünde bir sayı alıyoruz

Örneğin şöyle:

 #import "n1.dll"
string fData ( string a1);
#import

....

string znak = fData ( "a" );

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

Bilgi eksikliğinden dolayı dll'yi düzeltemiyorum. Bir dll'ye aktarmak için kodu nasıl doğru biçimlendireceğimi ve nasıl doğru bir şekilde alacağımı söyle . Ve şimdi MT5'te dll'm çalışmıyor.

Şimdiden teşekkür ederim.

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa :

Sakıncası yoksa bana da haber ver. Bir dll var, ona bir metin değeri geçiriliyor, çıktıda string türünde bir sayı alıyoruz

Bilgi eksikliğinden dolayı dll'yi düzeltemiyorum. Bir dll'ye aktarmak için kodu nasıl doğru biçimlendireceğimi ve nasıl doğru bir şekilde alacağımı söyle . Ve şimdi MT5'te dll'm çalışmıyor.

Şimdiden teşekkür ederim.

Bir DLL'den bir dize döndürerek çalışmayı yeniden kontrol ettim ve x64'te bir hata buldum (birkaç optimizasyonun sunulmasından sonra ortaya çıktı). Düzeltme sonraki yapıya dahil edilecektir.

x64 çalıştırıyorsanız, lütfen derlemenin yayınlanmasını bekleyin.

Ekleyebileceğim tek şey, MQL5'in Unicode dizeleriyle çalışması.

 
Başka bir deyişle, dll'yi yeniden yazmanız gerekiyor ...
 
Dll'lerin gücünü hissetmek istiyorum, onlar hakkında çok fazla konuşuyorlar. Soru, nereden başlayacağınız basit. Ne indirmeli, ne okumalı, hangi foruma gitmeli, puanlar 5-6 plz. Bu hayatta çok şey birincil pendele bağlıdır.
 

Makale için teşekkürler. Kullanıldığı ortaya çıktı.

Yol hakkında harika bir ipucu. Ancak !! VS2010'da DLL yolunun nasıl doğru bir şekilde ayarlanacağını bulmak 10 dakika sürdü.

Benim için şöyle çıktı:

C:\Users\pp\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

Yolu MetaEditor'dan kopyalamanızı tavsiye ederim.

Veya kendi ortamınızı belirtin (kontrol etmedi).

Ve yine de, çoklu kullanımda nasılız?

 

Makale için teşekkürler. Tamamen tekrar ettim, ancak uygulama sırasında karşılaştığım şey hakkında birkaç söz istiyorum - bu küçük görünen şeyler beni neredeyse ondan uzaklaştırdı. Açıklığa kavuşturmak istediğim şey (VS2010 + MT5 (32 bit) build 756 + Win 7 Ultimate x64 kullanıyorum):

  1. X64 platformuna nasıl bağlanmaya çalışsam da işe yaramadı - anladığım kadarıyla nedeni, oluşturulan DLL'nin standart Windows kitaplıklarına örtük bağımlılığıydı , bir nedenden dolayı x86 kitaplıkları yüklendi - bu bir MQL5 sorunu değildir, ancak yine de bahsetmeye değer. MT5 32 bit yükleyerek bu durumdan çıktım - bu, "kurulum klasörü"\mt5setup.exe /32 komut satırı kullanılarak yapılır. Peki ve buna göre DLL x86 kullanır. Bu nedenle, en azından ilk aşamada yalnızca x86 kullanmanızı öneririm.
  2. MT5 eklenti DLL'sini hiçbir şekilde bulamadı. Makale, DLL'yi terminalin Kitaplıklar klasörüne yerleştirdiğini, ancak terminalin hala görmediğini söylüyor. Çözüm şu şekilde: DLL'nin nerede olacağı önemli değil, asıl mesele bu yerin sistem ortam değişkenlerine yazılması. Bunun nasıl yapıldığı Google'a yardımcı olacaktır.

Aksi takdirde çok da fena olmayan bir yazı... Saygılar!

 

Örnek 64-bit MT5'te çalışmıyor. Terminal, bunun 32 bit DLL olduğunu ve onu içermediğini belirtir. Ancak Win32 altında (bu örnekte ve diğer tüm örneklerde olduğu gibi - Delphi'de olduğu gibi) - aynı DLL'lerin tümü 32-bit'tir. Bir önceki gönderide olduğu gibi terminalin 64-bit versiyonunu kaldırıp 32-bit versiyonunu kurmak gerekiyor. 64 bit sürüm zorla yüklendiğinden, nasıl yapılacağını da bilmeniz gerekir. MT5 64 bit'in genellikle ölü bir terminal olduğu ortaya çıkıyor, neden piyasaya sürüldüğü belli değil. Sevgili geliştiriciler, mümkünse lütfen MT5 64-bit, 32-bit DLL'ye bağlanmayı mümkün kılın.

Ve teknik olarak imkansız veya zorsa, bu sürümün 32 bit DLL'lerle çalışmayacağının tuzaklarını yazmanız yeterlidir, aksi takdirde kullanıcılar acı çeker ve neyin yanlış olduğunu anlayamaz. Ve açıkça, Kütüphaneler klasörünün terminalin dizinlerinde olmadığını, ancak kim bilir nerede olduğunu ve deneyim olmadan bulamayacağınızı, denemeyin bile. Ve bu arada, tüm göstergeler ve uzmanlar bu gizli yerde bulunur, bu nedenle MT5'i yükledikten sonra bunları unutabilirsiniz - tüm bunların C:\Users\pp\AppData\Roaming gizli klasöründe olduğunu bilmiyorsanız ... . Ve sonra kullanıcı normal yazılmış bir program kurduğunu düşünür ve bu bir aldatmacadır.

 

Teknik seviyenizi geliştirmelisiniz.

64-bit programlar için 64-bit kitaplıklara ihtiyaç vardır ve 32-bit olanları makul bir çerçeve içinde bağlamanın bir yolu yoktur. 32 bit sürümü yüklemek için yükleyicinin /32 anahtarıyla çalıştırılması gerekir.

Makaleyi yeniden yazacağım ve MetaEditor ve MT4 ve MT5 platformlarında uzun süredir uygulanan harika şeyleri ekleyeceğim. Birçok geliştirici yeni özelliklerin farkında değil.