Passare un array bidimensionale da MQL4 a dll - pagina 3

 
TheXpert:
Non ci sono array multidimensionali in MQL4. Trasmettetelo come monodimensionale. L'importante è calcolare correttamente la dimensione e trasmetterla.

int ArrayResize( object&array[], int new_size)
Imposta la nuova dimensione nella prima dimensione dell'array. Se eseguita con successo, la funzione restituisce il numero di tutti gli elementi contenuti nell'array dopo il ridimensionamento, altrimenti restituisce -1 e l'array non si ridimensiona.
Nota: una matrice dichiarata localmente in qualsiasi funzione che è stata ridimensionata rimarrà invariata al completamento della funzione. Quando la funzione viene richiamata, tale array avrà una dimensione diversa da quella dichiarata.
Parametri:
array[] - Array per il ridimensionamento.
nuova dimensione - Nuova dimensione per la prima dimensione.
Esempio:
double array1[][4]; int element_count=ArrayResize(array1, 20); // nuova dimensione - 80 elementi


Questa è una citazione dalla guida e una risposta simultanea all'autore del post sul fatto che tutti gli array in MQL sono monodimensionali.

 
Debugger:

Questa è una citazione dalla guida e una risposta simultanea all'autore del post su come tutti gli array in MQL sono unidimensionali.

Questa è una funzione sopra un array unidimensionale. Cerca di dimostrare il contrario.
 
Perché reinventare la ruota e cercare di apparire più intelligenti degli sviluppatori C++?
 
Debugger:
Perché reinventare la ruota e cercare di apparire più intelligenti degli sviluppatori C++?

Quello che pensiamo e quello che c'è realmente sono O-O-O spesso cose DIVERSE, e ancora di più quando cerchiamo di pensare per gli altri!

Pensi davvero che Vadim non abbia niente di meglio da fare che "sembrare più intelligente degli sviluppatori"? Conosci l'uomo così bene da fantasticare in questo modo! Avrei paura di vivere in un mondo distorto a tal punto... :)))

E se una persona cambia/modifica/ridisegna qualcosa che è stato precedentemente creato da qualcun altro - è un suo diritto! È NORMALE cambiare il mondo per se stessi anche se è contro l'accettato "piegarsi al mondo che cambia"... ;)

 

Mi chiedo dove si trova una tale "bicicletta"? :-))

Prima di scrivere, ho scavato tutto. Nemmeno in Boost. Per non parlare del C++, che non ha niente a che fare con questo, e non c'è neanche in STL.

A proposito, non esiste una soluzione completa a questo problema. Non entrerò nei dettagli, ma le capacità del C++ sono insufficienti per risolvere questo problema.

Mi sono consultato su Windgrad. Ci sono alcuni buoni programmatori lì. Non appena hanno imparato il compito, hanno subito previsto alcuni problemi specifici. Naturalmente, li ho risolti quasi tutti. Rimanevano quelli irrisolvibili, in linea di principio. Questi sono problemi legati alla gestione dei contenuti degli array attraverso gli operatori di indicizzazione "[]". Nessuno su Internet sa come farlo. Ho fatto una stampella. Ora possiamo lavorare quasi completamente con gli operatori "[]" ma dobbiamo fornire un certo tipo di indice all'ultima dimensione (cosa che possiamo facilmente dimenticare di fare e di cui il compilatore non ci avverte). Allora funziona come un normale array multidimensionale con indicizzazione attraverso []. Cioè, l'operatore è sovraccaricato 4 volte con un tipo di indice diverso. Un sovraccarico restituisce il contenuto della cella in base all'ultimo calcolo dell'indice lineare da parte dei precedenti operatori []. Gli altri sovraccarichi restituiscono un oggetto in modo che l'operatore [] possa essere usato di nuovo. In alcuni casi viene attivato un operatore di tipo cast che restituisce il contenuto dell'ultima cella a cui si è acceduto. In alcuni casi questo non funziona. Ci possono essere alcuni problemi di cui verrete a conoscenza solo dopo che il programma non funziona correttamente. In alcuni casi il compilatore aiuta. In altri, sono le eccezioni che mettono in atto per possibili errori dell'utente. Ho cercato di provvedere a tutti i casi.

I problemi principali sono questi:

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

C'è il metodo at(). Sostituisce completamente gli operatori "[]".

La classe è protetta dalla sezione critica per lavorare in applicazioni multithread.

 
Zhunko:

No, è al di là di me, non riesco a leggerlo in silenzio.

Sei un ciclista nub. L'implementazione più semplice è stata postata non molto tempo fa in mql5 (!) con una dimensione di 100 linee.

 
TheXpert:

No, è al di là di me, non riesco a leggerlo in silenzio.

Sei un ciclista nub. L'implementazione più semplice è stata postata non troppo tempo fa in mql5 (!) con una dimensione di 100 linee.

Là fuori è una schifezza.
 
Zhunko:
Questa è una stronzata.

Oh sì, niente stronzate solo dal grande guru Vadim, inginocchiatevi davanti al suo volto.

Ugh... Gli underachievers hanno l'ego più grande. Hanno imparato a usare msdn e l'aiuto, hanno scritto più di 1000 righe di testo e questo è tutto, sono una star. Ho sentito da qualche parte la parola singleton e XP, tutto qui, conosco i pattern di programmazione e i metodi. Sono un fottuto designer...

Dovresti vergognarti, non sei un ragazzo.

 
Vadim! Sei interessato a perdere il tuo tempo con QUESTO ("sei un pazzo tu stesso") livello di argomentazioneda parte di persone "autolesioniste"?
 
TheXpert:

Oh sì, niente stronzate solo dal grande guru Vadim, inginocchiatevi davanti al suo volto.

Ugh... Gli underachievers hanno l'ego più grande. Hanno imparato a usare msdn e l'aiuto, hanno scritto più di 1000 righe di testo e questo è tutto, sono una star. Ho sentito da qualche parte la parola singleton e XP, tutto qui, conosco i pattern di programmazione e i metodi. Sono un fottuto designer...

Dovresti vergognarti, non sei un ragazzo.


Andrew, perché non mi hai mostrato che superprogrammatore sei? Il primo passo è spiegare come hai risolto il problema. Ho scritto come l'ho risolto. Ora ditemi voi. Poi esamineremo insieme le tue idee sbagliate.

Ancora una volta, non sono un programmatore. Sono meglio di così.

===========

A proposito, non ho progetti di meno di 1000 linee. Di solito decine di volte di più. Questa classe (base) è di 5110 linee + 2 2500 linee ciascuna di classe ereditata da essa. Questo senza contare una dozzina di altri simili usati nel progetto.