将MySQL连接到MQ4 - 页 4

 

如果函数返回一个指针,它就是一个普通的int(4字节)值。

我们将在memcpy 或strcpy中进一步使用这个int(如果我们知道它是一个以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

所以,对于我们的公羊,我们需要函数来获得长度。

mysql_num_fields

mysql_fetch_lengths

 
sergeev:

所以对于我们的公羊,我们将需要函数来获得长度。

mysql_num_fields

mysql_fetch_lengths

没有太多的信息可以让人完全理解(对于初级程序员)。

 
HIDDEN:

要完全理解的信息不多(初级程序员)。


例如,MySQL的什么功能在MQL中很难使用?
 
sergeev:

例如,在MQL中工作时,MySQL的什么功能会导致困难?

返回一个数组的数据,我想这是唯一还没有完全解决的问题。

P.S. 发布函数的完整代码,以从MQL4的数据库中返回数据阵列。我明白这是有可能做到的。

 
HIDDEN:

数据数组的返回,我想这是唯一还没有完全解决的问题。

P.S. 发布函数的完整代码,以从MQL4的数据库中返回数据阵列。我明白,这是有可能做到的。


在这里,我不想走得太远,我将以mysql_get_client_info为例来说明。

它返回一个指向以NULL为结尾的字符串的指针(char*)。

我们正在做的。

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

就这样了。同理,所有东西都是从其他返回指针的函数中提取的。

PS
对不起,这不是MQL4。

 
sergeev:

这就是全部。

所以这都是针对mql5的,而4的实现是不可能的?
 
HIDDEN:
那么,所有这些都是针对mql5的,而对于4来说是不可能实现的?

我认为这将是类似的。只是有必要在memcpy 中操作类型(而不是用uchar给int[]或string&)。 ,如果你得到结果(或没有),请告诉我。
 
sergeev:

我想这是一样的。只是你需要在memcpy中操作类型(而不是Uchar给int[]或string&)。
试试吧,如果你有结果(或没有),请告诉我。
我这样折腾,那样折腾,对我来说,4号机没有任何作用。有时甚至连终端都完全崩溃了。
 
sergeev:

下面是一个mysql_get_client_info的例子

它返回一个指向以NULL为结尾的字符串的指针(char*)。

我们正在做的。

就这样了。同理,所有东西都是从其他返回指针的函数中提取的。

PS
对不起,这不是MQL4。


你能从mysql_fetch_row得到正常的结果吗?我突然需要一块肌肉,幸运的是,在一次终端更新 后,我的方法破产了。
 
Graff:

你是否设法从mysql_fetch_row获得正常的结果?我突然需要一根筋,而且尽可能在终端更新后,我的方法被搞乱了。

是的,一切工作都很完美,但到目前为止,我只为MQL5做了这件事。

在我的帖子中,有一个例子说明了它是如何工作的。