
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
uchar - Unsigned Character, perché dovreste usarlo per un ciclo? Non ha senso per me . . . usate un int. Lavorerai con gli ulong, che è quello che è un nuovo datetime . . . e quando fai typecast senza pensarci in futuro verrai avvertito . . . affronta l'avvertimento o ignoralo. Non sperare solo nel meglio però, fai come stai facendo ora, impara e comprendi
La roba che hai postato da stackoverflow ha senso per me, penso che sia un buon consiglio.
uchar era solo un esempio in quanto la mia domanda era relativa all'uso di piccoli tipi di variabili. uchar è un valore positivo di 1 byte da 0 a 255 quindi per un loop da 0 a 100 si potrebbe usare l'uchar da 1 byte.
Se avete bisogno di salvare un valore restituito da una funzione e la funzione in questione restituisce un uchar allora usate una variabile uchar per salvare il valore restituito. . . con l'originale mql4 questo non era un problema, sarà più un problema con il nuovo mql4.
Quando ho fatto la domanda non sapevo perché avrei voluto farlo, ecco perché ho fatto la domanda lol...
Non sapevo se un tipo di variabile a 8 bit avrebbe elaborato più velocemente di una a 32 bit o se sarebbe stato più lento o uguale, non sapevo se un valore a 8 bit avrebbe usato meno RAM o meno spazio su disco. visto che ora abbiamo questi piccoli tipi di variabili a nostra disposizione, ero solo interessato a conoscere i pro e i contro di usarli quando si adattavano ai requisiti del blocco di codice, rispetto all'uso di interi a 32 bit su tutta la linea.
Pensavo che forse un sistema operativo a 32 bit potesse elaborare quattro valori a 8 bit allo stesso tempo, ma non lo sapevo. A quanto pare no. Questo spiega perché un sistema operativo a 64 bit non è molto più veloce di uno a 32 bit, tranne per il fatto che può accedere a più RAM. Me lo sono chiesto spesso.
Ho una domanda per la quale non ho trovato la soluzione.
Come usare void&? Voglio dire, se ho bisogno di inviare qualsiasi puntatore a una DLL. Nel file di aiuto ci sono funzioni che usano questo tipo void, ma se lo metto da qualche parte nel sorgente, non si compila. Ho provato a usare template come soluzione alternativa, ma template è proibito all'interno della dichiarazione #import.
Ho gestito la costruzione per i tipi singoli, ma non sono in grado di implementare il passaggio di void& array pointer alla DLL, a meno che non specifichi il tipo esplicito.
C'è qualche limitazione per passare array di strutture a una DLL?
Supponiamo che MT4Structure sia una struttura semplice.
Avendo importato la kernel32.dll, una singola struttura funziona bene:
ma non sono in grado di far funzionare accettando l'array di strutture. Il compilatore non compila con MT4Structure&[] se inviato come parametro a questa dichiarazione:
C'è qualche limitazione per passare array di strutture a una DLL?
Non riesco a vedere un problema con qualcosa del genere:
Funziona come ci si aspetta (a condizione che si permetta un diverso allineamento delle strutture di default in MT4 e nella DLL).
(BTW, in realtà non sono sicuro di quale sia la rappresentazione interna di un bool MQL4 ora, ma preferirei dichiarare le funzioni Win32 come int di ritorno. Le funzioni Win32 restituiscono un BOOL piuttosto che un bool C++. Un BOOL è una macro di Windows per un intero a 4 byte, il cui valore è 1/0, mentre un bool C++ è un singolo byte. Se dite a MT4 di aspettarsi un singolo byte di valore di ritorno dalle funzioni quando in realtà stanno restituendo quattro byte, allora potreste - anche se è molto improbabile - finire con la corruzione dello stack).
Come usare void&? Voglio dire, se ho bisogno di inviare qualsiasi puntatore a una DLL.
Non sono sicuro di quale sia la tua domanda. Per esempio, la documentazione dell'API Win32 usa void* per significare "questo accetta qualsiasi tipo di puntatore a qualsiasi cosa; alla funzione Win32 non importa quale sia il tuo blocco di memoria".
Non sono sicuro di quale sia la tua domanda. Per esempio, la documentazione dell'API Win32 usa void* per significare "questo accetta qualsiasi tipo di puntatore a qualsiasi cosa; alla funzione Win32 non importa quale sia il vostro blocco di memoria".
Esattamente. Ma sembra che non sia proprio possibile con il MQL4, e l'uso di un modello non è consentito all'interno del blocco #import. Quindi l'uso di strutture aggiuntive con winapi si trasforma in un aggiornamento manuale delle dichiarazioni #import ogni volta che è necessario un nuovo tipo. Il che è piuttosto scomodo per me, dato che la mia intenzione era di gestire le importazioni in un unico posto.
Esattamente. Ma sembra che non sia proprio possibile con MQL4, e l'uso di un modello non è consentito all'interno del blocco #import. Quindi l'uso di una struttura aggiuntiva con winapi si trasforma in un aggiornamento manuale delle dichiarazioni #import ogni volta che è necessario un nuovo tipo. Il che è piuttosto scomodo per me.