Discussione su "Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti". - pagina 6
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
Usarewchar_t invece di char
Il problema sta nel mql stesso.
Che tipo di codice è questo? Copiare un puntatore è solo copiare 4 byte di memoria che contengono l'indirizzo.
In questo caso, memcpy può aiutarvi, se vi occupate prima dell'allocazione del buffer necessario nella linea ricevente (nel programma MQL5).
Che tipo di codice è questo? Copiare un puntatore è solo copiare 4 byte di memoria che contengono l'indirizzo.
In questo caso, memcpy può aiutarvi, se vi prendete cura dell'allocazione del buffer richiesto nella linea ricevente (nel programma MQL5).
Cosa c'entra il puntatore? Questo codice funziona perfettamente in mql4. Non dopo la migrazione a mql5.
Tutti qui stanno dando consigli, ma vorrei che uno mostrasse un esempio davvero buono di come passare la stringa da mql5 alla funzione dll.
...
Domanda
Qual è il problema? Come passare umanamente una stringa da MQL a dll?
1) Grazie per il suo messaggio. L'errore è stato corretto. Si prega di attendere un aggiornamento.
2) Ti è stato detto correttamente di wchar _t - le stringhe in MQL5 sono Unicode.
3) Cosa intendi per "Quando si controlla in visual debug"?
4) Questo è il modo corretto di usarlo:
Grazie per aiutare i programmatori in difficoltà come me. :) Il tuo esempio ha portato un po' di chiarezza nella mia situazione.
Ho deciso di scrivere (o ottavo, chi può averne bisogno) una funzione per convertire la stringa da wchar_t al buon vecchio char. Questa funzione può essere utile a coloro i cui progetti hanno molto codice che utilizza il tipo char. E poiché MQL5 passa solo wchar_t, è più facile convertire in ingresso che riscrivere metà del codice della dll.
Grazie per aiutare i programmatori in difficoltà come me. :) Il tuo esempio ha portato un po' di chiarezza nella mia situazione.
Ho deciso di scrivere (o ottavo, chi può averne bisogno) una funzione per convertire la stringa da wchar_t al buon vecchio char. Questa funzione può essere utile a coloro i cui progetti hanno molto codice che utilizza il tipo char. E poiché MQL5 passa solo wchar_t, è più facile convertire in ingresso che riscrivere metà del codice della dll.
Le funzioni DLL che accettano stringhe come char *, naturalmente, prendono un puntatore al primo elemento dell'array di tipo char. Questo significa che quando si descrive l'importazione di tali funzioni nel programma MQL5, dovremmo usare l'array di char come parametro stringa.
Per questi casi, abbiamo fornito la funzione StringToCharArray che converte correttamente le stringhe nell'alfabeto nazionale. La funzione wcstombs non lo fa sempre correttamente.
L'articolo è interessante e utile.
1) Il fatto che il codice sorgente sia incluso è bello. Heh, ma dov'è la DLL compilata? Ovviamente, non è un problema per un Megaproger crearla.
Ma se non sono un Mega e non sono un Proger?! :)
2) L'articolo usa un compilatore MS. Non sono amichevole con esso:) Ho BC++. Puoi postare il codice sorgente sintonizzato su di esso?
(IMHO, probabilmente, è sempre meglio postare fonti per MS e BC, sono due aziende leader, ma i loro stili di scrittura sono diversi).
Cerchiamo di non postare codice potenzialmente pericoloso (DLL) per non rendere nervosi gli utenti. Inoltre, questo è solo un esempio di prova.
Purtroppo non ho a portata di mano il compilatore Borland C++. Provate ad adattarlo voi stessi, è meno di una pagina di codice.
yu-sha:
Gli sviluppatori non stanno puntando troppo in alto?
E perché reinventare la ruota quando tutto è già stato fatto molto tempo fa (C, Delphi, ...)?
Non si dovrebbe fare ciò che sembra giusto, ma ciò che è benefico. Perché redditizio è ciò che è giusto. E in questo caso (MT5+MQL5+servizi) - un enorme profitto (sarà ripagato decine o centinaia di volte) per MetaQuotes e un enorme profitto per i trader. Solo non subito.
È sempre una buona idea guardare in lungo e in largo per almeno 5 anni. MetaQuotes ha fatto proprio questo.