Collegare MySQL a MQ4 - pagina 4

 

se la funzione restituisce un puntatore, è un normale valore int (4 byte)

useremo ulteriormente questo int in memcpy o strcpy (se sappiamo che è una stringa terminata con NULL)

#import "msvcrt.dll"
        int memcpy(uchar &Destination[], uchar &Source[], int Length);
        int memcpy(uchar &Destination[], int Source, int Length);
        int memcpy(int Destination, uchar &Source[], int Length);
#import

quindi, per i nostri arieti, abbiamo bisogno di funzioni per ottenere lunghezze Lunghezza.

è

mysql_num_fields

mysql_fetch_lengths

 
sergeev:

quindi per i nostri arieti, avremo bisogno di funzioni per ottenere le lunghezze.

è

mysql_num_fields

mysql_fetch_lengths

Non ci sono molte informazioni per una comprensione completa(per i programmatori principianti).

 
HIDDEN:

Non ci sono molte informazioni per comprendere appieno (programmatori principianti).


Per esempio, quale funzione di MySQL è difficile da lavorare in MQL?
 
sergeev:

Per esempio, quale funzione di MySQL causa difficoltà quando si lavora in MQL?

Ritorno dell'array di dati, penso che questo sia l'unico problema che non è stato completamente risolto.

P.S. Pubblica il codice completo della funzione per restituire l'array di dati dal database in MQL4. Capisco che era possibile farlo.

 
HIDDEN:

Ritorno dell'array di dati, penso che questo sia l'unico problema che non è stato completamente risolto.

P.S. Pubblica il codice completo della funzione per restituire l'array di dati dal database in MQL4. Ho capito che era possibile farlo.


Ecco qui, per non andare troppo lontano nel deserto, mostrerò con l'esempio mysql_get_client_info

restituisce un puntatore a una stringa terminata con NULL (char*)

che stiamo facendo:

#import "libmysql.dll"
    int mysql_get_client_info(); // функция вернула char*
#import "msvcrt.dll"
    int strcpy(uchar &strDestination[], int strSource); // копируем NULL-строку из source в байтовый массив 
#import

void OnStart()
{
    uchar byte[100]; int ptr;
    ptr=mysql_get_client_info(); // получили указатель на строку
    strcpy(byte, ptr); // скопировали его в массив
    string st=CharArrayToString(byte); Print("client_info="+st); // вывели на печать
}

E questo è tutto. ANALOGICAMENTE tutto viene estratto da altre funzioni che restituiscono puntatori.

PS
Mi dispiace che non sia MQL4.

 
sergeev:

Questo è tutto.

Quindi questo è tutto per mql5, e l'implementazione è impossibile per 4?
 
HIDDEN:
Quindi, tutto questo è per mql5, e l'implementazione è impossibile per 4?

Penso che sarà simile. solo è necessario manipolare con il tipo in memcpy (invece di uchar dare int[] o string & ).
provare, se si ottiene risultati (o no), fatemi sapere.
 
sergeev:

Penso che sarà lo stesso. solo che avete bisogno di manipolare con il tipo in memcpy (invece di uchar dare int[] o string& ).
provalo, e se ottieni risultati (o no), fammi sapere.
Ho girato e rigirato di qua e di là, niente ha funzionato per me sul 4. A volte anche il terminale si blocca completamente.
 
sergeev:

Ecco un esempio di mysql_get_client_info

restituisce un puntatore a una stringa terminata con NULL (char*)

che stiamo facendo:

E questo è tutto. ANALOGICAMENTE tutto viene estratto da altre funzioni che restituiscono puntatori.

PS
Mi dispiace che non sia MQL4.


Sei riuscito a ottenere risultati normali da mysql_fetch_row? Avevo improvvisamente bisogno di un muscolo e per fortuna, dopo un aggiornamento del terminale, il mio metodo è fallito.
 
Graff:

Sei riuscito a ottenere risultati normali da mysql_fetch_row? Improvvisamente avevo bisogno di un muscolo e nel modo peggiore possibile dopo gli aggiornamenti del terminale il mio metodo si è fregato.

Sì, tutto funziona perfettamente, ma finora l'ho fatto solo per MQL5

Un esempio di come funziona da sopra nel mio post