MQL4'ten dll'ye iki boyutlu diziyi geçirin

 

EA'daki dizilerin durumunu kontrol etmeniz gerekir. Bunu yapmak için, MQL4'ten iki boyutlu dizileri alacak ve durumlarını ayrı bir açılır pencerede görüntüleyecek bir C++ dll oluşturmak istiyorum.

Anladığım kadarıyla iki boyutlu bir diziyi MQL4'ten dll'ye aktarmanız gerekiyor, ancak tam olarak iki boyutlu bir dizi nasıl aktarılır, ilk boyuta göre boyutu bilinmiyorsa, MQL4'ün kendisinde fonksiyonda değişiyor .

 
Dinamik bir dizi oluşturun.
 

Programlamada yeniyim, lütfen anlamama yardım edin. Örneğin, MQL4'te bir dizi var

çift kütle[][6]

1. C++'da dll'ye nasıl aktarılır?

2. C++'da bir açılır pencerede nasıl görüntülenir?

 

Çeşitli hemoroidlerin aktif ve düşmeyen bir dll'sini şekillendirirken ve böylece çatının üstünde ve bu nedenle:

-> 1. görevi, yalnızca tek boyutlu dizilerin aktarılması gerekecek şekilde yeniden konumlandırın ("etiketli çanta" yöntemiyle);

-> 2. Bir dll'nin ana fikri, onun bir fonksiyon kütüphanesi olmasıdır, yani. bu _hesaplama_ modülüdür, bu nedenle burada herhangi bir grafik / pencere öğesi kullanmaktan kaçınmak için mümkün olan her şekilde;

-> 3. (Böyle bir öğe kesinlikle yakında oluşacaktır) : stringleri geçerken en az baş ağrısı onlar ansi string olduğunda, yani. alt türleri ile unicode için - mql kullanarak karakterlere dönüştürdükten sonra madde 1'e bakın, ör. bayt;

-> 4. (ve böyle bir öğe kesinlikle yakında ortaya çıkacaktır): eğer bir dll hesaplamalar için nesneler kullanıyorsa, bunları bir nesneye sarmak, başlatma sırasında tutamağını almak, mql programına iletmek ve ardından yöntemleri çağırmak en iyisidir. bu tutamaç tarafından sarmalayıcı nesneye.

 

Bunu bir dosya aracılığıyla uygulamanın sizin için en kolay olacağını düşünüyorum - hindi kaldırıldı, c ++ modülü yüklendi ve silindi, vb.

 
MQL4'te çok boyutlu diziler yoktur. Tek boyutlu olarak aktarın, asıl mesele boyutu doğru hesaplamak ve aktarmaktır.
 

TheXpert :
В MQL4 нет многомерных массивов. Передавайте как одномерный, главное правильно размер высчитать и передать.

Onlar. dizi [10][6] ise, boyutu tek boyutta 60 olur mu?

 
Barbarian :
Evet.
 
TheXpert :
Evet.
onlar. C++'da tek boyutlu diziyi tekrar iki boyutlu diziye çevirecek bir sınıf oluşturmanız mı gerekiyor?
 
Barbarian :
onlar. C++'da tek boyutlu diziyi tekrar iki boyutlu diziye çevirecek bir sınıf oluşturmanız mı gerekiyor?

Evet. Kesinlikle.

Son zamanlarda böyle bir sınıf eklendi. Sonuç, gerçekten çok boyutlu bir dinamik dizidir. Onlar. Veri yapısını bozmadan hareket halindeyken ölçüm sayısını değiştirebilirsiniz.

Ayrıca, bir diziye işaretçi ile başlatabilirsiniz. Operatörler aşırı yüklendi. 348 aşırı yük çıktı :-))

Operatörlerde buna benzer bir şey:

a4Arr[ 1 ][ 2 ][ 3 ] += a3Arr[ 1 ][ 0 ]; // В указанное 4-е измерение массива a4Arr добавляется содержимое 3-го измерения массива a3Arr.
Onun için matematiksel işlemler ve çeşitli manipülasyonlar yapıldı. Dizin için bir tersi var ve iş için çok daha gerekli.

=========================

Bir dizinin çok boyutluluğu sadece bir arayüzdür. Bir dizi diziyi, dizilere yönelik bir dizi işaretçiyi, bir dizi kapsayıcı sınıfını, bir kapsayıcı sınıf kapsayıcı sınıfını vb. gizleyebilir.

Bizim durumumuzda sadece tek boyutlu bir dizinin çok boyutlu olarak yorumlanması uygundur. Aksi takdirde, MQL4'ten aktaramazsınız.

 
Barbarian :
onlar. C++'da tek boyutlu diziyi tekrar iki boyutlu diziye çevirecek bir sınıf oluşturmanız mı gerekiyor?
Gerekli değil. Endeksi hesaplayabilirsiniz. Her seferinde bir diziyi dönüştürmek çok pahalıdır.
Neden: