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
Non sono un mega programmatore. Ma non capisco dove sia l'universalità? uchar non può essere universale perché limita l'utente, cioè: uchar è solo per valori positivi. Il valore minimo è zero, il valore massimo è 255.
Qualsiasi dato oltre il valore di uchar diventa uguale al valore massimo o minimo di uchar.
In base a quanto detto, ho chiesto fin dall'inizio "come passare int o double". Non ti seguo, capo.
Ok, facciamo un piccolo tour.
1. Prendiamo l'esempio di char e uchar. Entrambe le variabili hanno una dimensione di 1 byte.
Ciò significa che assegnandole l'una all'altra non si perdono byte e quindi non si perde il valore dei dati originali.
Guardate queste espressioni
Lo stesso vale per long/ulong, int/uint.
Cioè, variabili di tipo intero della stessa dimensione in byte possono essere passate l'una all'altra senza perdere byte di informazione.
Ciò significa che, sebbene l'Expert Advisor accetti numeri MAGIC di tipo ulong, nei vostri programmi potrete sempre impostarli e leggerli in formato long, cioè firmato.
2. Ora guardate <qualcosa_tipo> e uchar.
Ad esempio int. Come sapete da sizeof(int) ha una dimensione di 4 byte. Ciò significa che questi 4 byte in memoria possono essere facilmente rappresentati come array uchar[4]
se c'è un double (è 8 byte), può essere rappresentato come array uchar[8]
Questo vale anche per i byte delle stringhe - in MQL è un array ushort.
bene e di conseguenza se avete una struttura di qualsiasi tipo, potete facilmente fornire qualsiasi dato come array uchar.
Questi concetti di base sui byte sono utilizzati nella versione MQL5 - file virtuali in memoria CFastFile. Memorizza qualsiasi dato nella memoria dell'array di uchar.
Ciò significa che non è necessario scambiare dati con programmi esterni. Oppure se si ricevono dati da un altro programma sotto forma di flusso di dati, ad esempio leggendo pagine Internet, e questi dati non devono essere salvati tutti su disco, allora è meglio usare CFastFile invece della mappatura di Windows.
e infine, per consolidare completamente https://www.mql5.com/it/articles/364.
MT5 642 Win7 64 non funziona, per quanto ne so, dopo che
hmem=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,size+HEAD_MEM,path); // crea un oggetto di memoria
Ottengo l'errore 1400,
ma Vista 32 funziona.
è a causa delle diverse dimensioni dei puntatori nei sistemi 32 e 64
Questo file di libreria è stato creato per un terminale a 32 bit.
ma se si utilizza un terminale a 64 bit, è necessario inserire il tipo 8-byte long in tutti i punti in cui è implicito un puntatore (ad esempio PBYTE, LPVOID, ecc. e in tutti i tipi di memcpy).
ma come faccio a connettermi
Si spegne
e questi due inlcusi funzionano l'uno senza l'altro.
ma come faccio a connettermi
Dà
e queste due inclusioni funzionano l'una senza l'altra.
provare a utilizzare la risoluzione contestuale ::
Grazie
Ho dovuto modificare la libreria standard.
Non credo sia una buona cosa....Grazie.
Ho dovuto modificare la libreria standard.
Non credo sia una buona cosa.Non hai capito.
Vi ho parlato di kernel32::GetLastError e guardate come è implementato nel mio codice.
Se non siete soddisfatti di questa opzione, dichiarate l'importazione da kernel32 diGetLastError, ad esempio, con un parametro int. Non ci sarà alcuna differenza nel chiamarlo, ma eviterete un conflitto.
non capisci.
Vi ho parlato di kernel32::GetLastError e guardate come è implementato nel mio codice.
Se questa opzione non vi soddisfa, dichiarate l'importazione da kernel32 diGetLastError, ad esempio con un parametro int. Non ci sarà alcuna differenza al momento della chiamata, ma eviterete un conflitto.
Forse non mi sono espresso correttamente.
ma dobbiamo
Perché ecco un esempio del vostro codice con la libreria standard allegata.
Quando si compila dà gli stessi errori.
olyakish, rileggi attentamente quello che ti ho scritto.
Se non sei soddisfatto del contesto, ti dico esattamente cosa intendo.
non capisci.
Vi ho parlato di kernel32::GetLastError e guardate come è implementato nel mio codice.
Se questa opzione non vi soddisfa, dichiarate l'importazione di kernel32 ::GetLastError, ad esempio con un parametro int. Non ci sarà alcuna differenza al momento della chiamata, ma eviterete un conflitto.
Quando si chiama kernel32::GetLastError con il suo contesto nel codice , il compilatore chiamerà GetLastError senza contesto.
I programmatori devono solo adottare la regola di chiamare gli analoghi MQL delle funzioni WinAPI standard con il contesto. In questo modo non ci saranno problemi con le modifiche successive.
In questo modo si corregge la bibbia standard e questa viene aggiornata, quindi è necessario modificarla di nuovo.
Quindi, se si corregge la bibbia standard, questa verrà aggiornata e sarà necessario modificarla.