MySQL an MQ4 anbinden - Seite 4

 

wenn die Funktion einen Zeiger zurückgibt, handelt es sich um einen normalen int-Wert (4 Byte)

wir werden diesen int in memcpy oder strcpy weiterverwenden (wenn wir wissen, dass es sich um eine Zeichenkette mit NULL-Ende handelt)

#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

Für unsere Schafböcke brauchen wir also Funktionen, um die Länge zu erhalten.

ist

mysql_Anzahl_Felder

mysql_fetch_lengths

 
sergeev:

Für unsere Schafböcke brauchen wir also Funktionen, um Längen zu erhalten.

ist

mysql_Anzahl_Felder

mysql_fetch_lengths

Es gibt nicht viele Informationen für ein vollständiges Verständnis(für Programmieranfänger).

 
HIDDEN:

Es gibt nicht viele Informationen, die man vollständig verstehen kann (Programmieranfänger).


zum Beispiel? welche Funktion von MySQL ist schwierig, mit in MQL zu arbeiten?
 
sergeev:

Welche Funktion von MySQL verursacht zum Beispiel Schwierigkeiten bei der Arbeit in MQL?

Rückgabe des Datenfeldes, ich glaube, dies ist das einzige Problem, das noch nicht vollständig gelöst ist.

P.S. Posten Sie den vollständigen Code der Funktion, um das Array von Daten aus der Datenbank in MQL4 zurückzugeben. Ich verstehe, dass dies möglich war.

 
HIDDEN:

Rückgabe eines Arrays von Daten, ich glaube, das ist das einzige Problem, das noch nicht vollständig gelöst ist.

P.S. Posten Sie den vollständigen Code der Funktion, um das Array von Daten aus der Datenbank in MQL4 zurückzugeben. Ich verstehe, dass dies möglich war.


um nicht zu weit in die Wildnis vorzudringen, zeige ich am Beispiel mysql_get_client_info

gibt einen Zeiger auf eine mit NULL beendete Zeichenkette (char*) zurück

das wir tun:

#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); // вывели на печать
}

Und das war's. ANALOGISCH wird alles aus anderen Funktionen gezogen, die Zeiger zurückgeben.

PS
Leider ist es nicht MQL4.

 
sergeev:

Das ist alles.

Also das ist alles für mql5, und die Umsetzung ist unmöglich für 4?
 
HIDDEN:
Also, all dies ist für mql5, und die Umsetzung ist unmöglich für 4?

Ich denke, es wird ähnlich sein. nur ist es notwendig, mit Typ in memcpy (anstelle von uchar geben int[] oder string& ) zu manipulieren.
versuchen Sie es, wenn Sie Ergebnisse (oder nicht) erhalten, lassen Sie mich wissen.
 
sergeev:

Ich denke, es wird das gleiche sein. nur Sie müssen mit Typ in memcpy (anstelle von uchar geben int[] oder string& ) zu manipulieren.
Probieren Sie es aus, und wenn Sie Ergebnisse erzielen (oder auch nicht), lassen Sie es mich wissen.
Ich habe mich so und so gedreht und gewendet, nichts hat bei mir bei 4 funktioniert. Manchmal stürzt sogar das Terminal komplett ab.
 
sergeev:

Hier ist ein Beispiel für mysql_get_client_info

gibt einen Zeiger auf eine mit NULL beendete Zeichenkette (char*) zurück

die wir tun:

Und das war's. ANALOGISCH wird alles aus anderen Funktionen gezogen, die Zeiger zurückgeben.

PS
Leider ist es nicht MQL4.


Konnten Sie normale Ergebnisse von mysql_fetch_row erhalten? Ich brauchte plötzlich einen Muskel, und wie es der Zufall wollte, ging meine Methode nach einem Terminal-Update kaputt.
 
Graff:

Haben Sie es geschafft, normale Ergebnisse von mysql_fetch_row zu erhalten? Ich brauchte plötzlich einen Muskel und nach den Terminal-Updates wurde meine Methode so schlecht wie möglich.

Ja, alles funktioniert perfekt, aber bis jetzt habe ich es nur für MQL5 gemacht

Ein Beispiel dafür, wie es funktioniert, siehe oben in meinem Beitrag

Grund der Beschwerde: