MQL4'ten dll'ye iki boyutlu diziyi geçirin - sayfa 3

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

int ArrayResize ( nesne ve dizi[], int yeni_boyut)
Dizinin ilk boyutunda yeni boyutu ayarlar. Başarı durumunda, işlev yeniden boyutlandırıldıktan sonra dizide bulunan tüm öğelerin sayısını döndürür, aksi takdirde -1 döndürür ve dizi yeniden boyutlandırılmaz.
Not: Yeniden boyutlandırılmış bir işlevde yerel olarak bildirilen bir dizi, işlev sona erdikten sonra değişmeden kalacaktır. İşlev yeniden çağrıldığında , böyle bir dizi bildirilenden farklı bir boyuta sahip olacaktır.
Seçenekler:
sıralamak[] - Yeniden boyutlandırılacak dizi.
yeni_boyut - İlk ölçüm için yeni boyut.
Misal:
 çift dizi1[][4];
int element_count=ArrayResize(dizi1, 20);
// yeni boyut - 80 eleman


Bu, MQL'de tüm dizilerin tek boyutlu olduğu gerçeğiyle ilgili yardımdan bir alıntı ve gönderinin yazarına eşzamanlı bir cevaptır.

 
Debugger :

Bu, MQL'de tüm dizilerin tek boyutlu olduğu gerçeğiyle ilgili yardımdan bir alıntı ve gönderinin yazarına eşzamanlı bir cevaptır.

Bu, tek boyutlu bir dizinin üstünde bir işlevseldir. Aksini kanıtlamaya çalışın.
 
Neden tekerleği yeniden icat edip C++ geliştiricilerinden daha akıllı ses çıkarmaya çalışasınız ki?
 
Debugger :
Neden tekerleği yeniden icat edip C++ geliştiricilerinden daha akıllı ses çıkarmaya çalışasınız ki?

Ne düşündüğümüz ve gerçekte ne olduğumuz çoğu zaman FARKLI şeylerdir ve hatta başkaları için düşünmeye çalıştığımızda daha da fazla!

Vadim'in "geliştiricilerden daha akıllı görünmekten" başka yapacak daha iyi bir şeyi olmadığını gerçekten düşünüyor musunuz? Bu kişinin böyle hayaller kurmasını ne kadar iyi tanıyorsunuz?! Bu kadar çarpık bir dünyada yaşamaktan korkardım... :)))

Ve eğer bir kişi daha önce başkaları tarafından yaratılmış bir şeyi değiştirir / tamamlar / yeniden yaparsa - bu onun tam hakkıdır! NORMAL - kabul edilen "değişen dünyanın altında sarkma" nın aksine, dünyayı kendiniz değiştirmek için ... ;)

 

Böyle bir "bisikletin" nerede olduğunu merak ediyorum? :-))

Yazmadan önce her şeyi gözden geçirdim. Otobüste bile böyle bir şey yok. Bununla hiçbir ilgisi olmayan C++'dan bahsetmiyorum bile ve STL'de de böyle bir şey yok.

Bu arada, bu sorunun tam bir çözümü yok. Ayrıntılara girmeyeceğim, ancak bu sorunu çözmek için C++ yeterli değil.

Vingrad'a danışıldı. Orada iyi programcılar var. Görevi öğrenir öğrenmez, belirli sorunları hemen öngördüler. Tabii ki, neredeyse hepsi başa çıktı. Temelde çözülmemiş kaldı. Bunlar, "[]" dizin oluşturma operatörleri aracılığıyla bir dizinin içeriğiyle çalışmayla ilgili sorunlardır. İnternette kimse bunun nasıl yapıldığını bilmiyor. koltuk değneği yaptım. Artık "[]" operatörleriyle neredeyse tamamen çalışabilirsiniz, ancak son boyutta belirli bir dizin türü sağlamanız gerekir (bunu yapmayı kolayca unutabilirsiniz ve derleyici sizi uyarmaz). Ardından, [] aracılığıyla indekslenen normal çok boyutlu bir dizi gibi çalışır. Yani bu operatör farklı bir indeks tipi ile 4 defa aşırı yüklenmiştir. Bir aşırı yükleme, önceki [] ifadeleri tarafından doğrusal indeksin son hesaplamasından itibaren hücrenin içeriğini döndürür. Geri kalan aşırı yüklemeler, [] operatörünü tekrar kullanabilmeniz için bir nesne döndürür. Bazı durumlarda, son erişilen hücrenin içeriğini döndüren bir yayın operatörü tetiklenir. Bazı durumlarda bu işe yaramaz. Ancak program düzgün çalışmadığında öğrendiğiniz sorunlar olabilir. Bazı durumlarda derleyici yardımcı olur. Diğerlerinde - olası kullanıcı hatalarına neden olan istisnalar. Tüm vakaları öngörmeye çalıştım.

Başlıca sorunlar şunlardır:

a[ 0 ][ 1 ][ 2 ] = a[ 0 ][ 1 ][ 3 ] + a[ 0 ][ 5 ][ 2 ] / a[ 0 ][ 8 ][ 12 ]; // Здесь на всякий случай надо в последнем измерении использовать тип _SIZE_T. Для логических операций тоже надо.

Bir at() yöntemi var. "[]" operatörlerini tamamen ve tamamen değiştirir.

Sınıf, çok iş parçacıklı uygulamalarda çalışmak için kritik bir bölüm tarafından korunmaktadır.

 
Zhunko :

Hayır, gücümün ötesinde, sessizce okuyamam.

Acemi bir bisikletçisin. En basit uygulama, çok uzun zaman önce, 100 satır boyutuyla mql5 (!) biçiminde düzenlenmiştir.

 
TheXpert :

Hayır, gücümün ötesinde, sessizce okuyamam.

Acemi bir bisikletçisin. En basit uygulama, çok uzun zaman önce, 100 satır boyutuyla mql5 (!) biçiminde düzenlenmiştir.

Kabartmak orada.
 
Zhunko :
Kabartmak orada.

Ah evet, sadece büyük guru Vadim saçmalık değil, onun karşısında diz çök.

Ah falan... Yarı eğitimli insanlar en büyük BOS'a sahiptir. Msdn ve help kullanmayı öğrendim 1000 satırdan fazla bir şey yazdım o kadar, ben bir yıldızım. Singleton ve XP kelimelerini bir yerde duydum, hepsi bu, kalıpları ve programlama yöntemlerini biliyorum. Dizimde bir yılanı kör ettim - evet, ben tasarımcı pipetleriyim ...

Yazık olmalı dostum, erkek gibi görünmüyor.

 
Vadim! "Konuşmacılarla" SUCH ("aptalın kendisi") tartışma düzeyinde zaman kaybetmekle ilgileniyor musunuz ???
 
TheXpert :

Ah evet, sadece büyük guru Vadim saçmalık değil, onun karşısında diz çök.

Ah falan... Yarı eğitimli insanlar en büyük BOS'a sahiptir. Msdn ve help kullanmayı öğrendim 1000 satırdan fazla bir şey yazdım o kadar, ben bir yıldızım. Singleton ve XP kelimelerini bir yerde duydum, hepsi bu, kalıpları ve programlama yöntemlerini biliyorum. Dizimde bir yılanı kör ettim - evet, ben bir tasarımcı pipetleriyim ...

Yazık olmalı dostum, görünüşe göre erkek değil.


Andrey, ne kadar süper programcı olduğunu göstermedin mi? Sorunu nasıl çözdüğünüzü açıklayarak başlayın. Karar verdiğim şeyi yazdım. Şimdi sen söyle. Sonra birlikte sanrılarınızı analiz edeceğiz.

Bir kez daha, ben bir programcı değilim. ben onun üstündeyim

===========

Bu arada, 1000 satırdan az projem yok. Genellikle on kat daha fazla. Bu sınıf (taban), kendisinden miras alınan sınıfın 5110 satır + 2 x 2500 satırıdır. Bu, projede kullanılan bir düzine benzerini saymıyor.