Discussione su "Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti". - pagina 8

 
avoitenko:

Dichiarazione di funzione DLL

Chiamare una funzione DLL

Esattamente! È esattamente quello che ho fatto. Grazie!
 

Nell'ultimo esempio, hai anche fatto alcune modifiche alla DLL, vero?

Questo è quello che voglio dire.

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

Potresti anche darmi un suggerimento, se non è troppo disturbo. C'è un dll, gli viene passato un valore di testo, l'output è un numero di tipo stringa

Per esempio così:

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

Non posso riparare il dll a causa della mancanza di conoscenza. Per favore, consigliate come fare un codice corretto per passarlo a dll, e come riceverlo correttamente. Ho la sensazione che la mia DLL non funzionerà in MT5.

Grazie in anticipo per l'aiuto.

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

Potresti anche darmi un suggerimento, se non è troppo disturbo. C'è un dll, gli viene passato un valore di testo, l'output è un numero di tipo stringa

Non posso riparare la DLL per mancanza di conoscenza. Si prega di consigliare come scrivere correttamente il codice per sottoporlo alla dll, e come ottenerlo correttamente. Perché la mia dll non funziona in MT5 al momento.

Grazie in anticipo per il vostro aiuto.

Ho ricontrollato il lavoro con il ritorno delle stringhe dalla DLL e ho trovato l'errore in x64 (apparso dopo alcune ottimizzazioni). La correzione sarà inclusa nella prossima build.

Se stai lavorando in x64, per favore aspetta il rilascio della build.

L'unica cosa che posso aggiungere è ricordare che MQL5 funziona con stringhe Unicode.

 
In poche parole, dovete riscrivere la dll...
 
Voglio sentire il potere dei dll, ne parlano molto. La domanda è semplice, da dove cominciare. Cosa scaricare, cosa leggere, quale forum frequentare, 5-6 punti per favore. Molto in questa vita dipende dal pendolo iniziale.
 
Renat:

Articolo pubblicato Come scrivere una DLL per MQL5 in 10 minuti e scambiare dati?:

Autore: Renat Fatkhullin

Grazie per l'articolo. L'ho già usato.

La punta è molto buona. Ma! Mi ci sono voluti 10 minuti per capire come impostare correttamente il percorso della DLL in VS2010.

Si è rivelato essere così:

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

Suggerisco di copiare il percorso da MetaEditor.

Oppure specificate il vostro percorso nell'ambiente (non l'ho controllato).

E un'altra cosa, come facciamo con il multithreading?

 

Grazie per l'articolo. Ripetuto per intero, ma voglio dire qualche parola su ciò che ho incontrato durante l'implementazione - queste cose apparentemente piccole mi hanno quasi scoraggiato. Quello che volevo chiarire (usando VS2010 + MT5 (32 bit) build 756 + Win 7 Maximum x64):

  1. Ho provato a collegarlo sulla piattaforma x64 ed è fallito - la ragione, come ho capito, era la dipendenza implicita della DLL creata dalle librerie standard di Windows, che per qualche motivo ha caricato la libreria x86 - questo non è un problema di MQL5, ma vale ancora la pena dirlo. Sono uscito da questa situazione installando MT5 32bit - si fa usando la linea di comando "cartella di installazione"\mt5setup.exe /32. Userà le DLL x86. Quindi consiglio di usare solo x86, almeno all'inizio.
  2. MT5 non è riuscito a trovare una DLL di plugin in nessun modo. L'articolo dice di mettere la DLL nella cartella Librerie del terminale, ma il terminale non riesce ancora a vederla. La soluzione è la seguente: non importa dove verrà memorizzata la DLL, purché la posizione sia specificata nelle variabili di sistema. Come fare questo aiuterà Google.

Altrimenti non è un cattivo articolo... Rispetto!

 

Su MT5 a 64 bit l'esempio non funziona. Il terminale segnala che è una DLL a 32 bit e non la collega. Ma sotto Win32 (come in questo esempio e in tutti gli altri esempi - come in Delphi) - tutte le DLL sono a 32 bit. Come nel post precedente, devo disinstallare la versione a 64 bit del terminale e installare quella a 32 bit. Ho anche bisogno di sapere come farlo visto che la versione a 64 bit è installata per forza. Si scopre che MT5 64 bit è un terminale morto, non so perché viene rilasciato. Cari sviluppatori, se è possibile, per favore rendete possibile collegare una DLL a 32 bit a МТ5 64 bit.

Se questo è tecnicamente impossibile o difficile, scrivete le insidie che questa versione non funzionerà con DLL a 32 bit e gli utenti soffrono e non possono capire cosa c'è di sbagliato. E scrivere apertamente che la cartella Librerie non è nelle directory del terminale stesso, e sa dove, e senza esperienza non troverà, non provare nemmeno. A proposito, in questo luogo segreto ci sono tutti gli indicatori e gli esperti, quindi installando MT5 potete dimenticarvene - se non sapete che tutto questo si trova in una cartella nascosta C:-Users\nAppData\Roaming... ...o l'utente pensa di installare un programma scritto normalmente, il che è un imbroglio.

 

Dovresti migliorare il tuo livello tecnico.

Per i programmi a 64 bit avete bisogno di librerie a 64 bit e non c'è modo di collegare librerie a 32 bit in modo ragionevole. Per installare la versione a 32 bit, il programma di installazione deve essere eseguito con lo switch /32

Riscriverò l'articolo e aggiungerò caratteristiche interessanti che sono state implementate da tempo in MetaEditor e nelle piattaforme MT4 e MT5. Molti sviluppatori non sono a conoscenza delle nuove caratteristiche.