【发布时间】:2016-06-22 12:15:00
【问题描述】:
今天我在 MQL4 中遇到了序列化问题。
我有一个方法,我从 DLL 导入:
在MQL4:
void insertQuery( int id,
string tableName,
double &values[4],
long ×[3],
int volume
);
在DLL:
__declspec(dllexport) void __stdcall insertQuery( int id,
wchar_t *tableName,
double *values,
long *times,
int volume
);
我在 MQL4:
string a = "bla";
double arr[4] = { 1.1, 1.3, 0.2, 0.9 };
long A[3] = { 19991208, 19991308, 19992208 };
int volume = 1;
insertQuery( idDB, a, arr, A, volume );
在这个方法中,我将这些值收集到文件中。
C++:
stringstream stream;
stream << " '";
for (int i = 0; i < 2; ++i) {
stream << times[i] << "' , '";
}
stream << times[2] << ", ";
for (int i = 0; i < 4; ++i) {
stream << values[i] << ", ";
}
stream << volume;
wstring table(tableName);
query.append("INSERT INTO ");
query.append(table.begin(), table.end());
query.append(" VALUES (");
query.append(stream.str());
query.append(" )");
std::ofstream out("C:\\Users\\alex\\Desktop\\text.txt");
out << query;
out.close();
但是在输出文件中我收到了这条记录:
INSERT INTO bla VALUES ( '19991208' , '0' , '19991308, 1.1, 1.3, 0.2, 0.9, 1 )
所以我的问题是:当我收到DLL 的记录时,为什么我在数组中丢失了一个long 值?
我尝试了很多方法来解决这个问题(我转移了两个和三个long 值等)并且总是我得到的结果是我输了秒 long 序列化时的值。 为什么?
【问题讨论】:
标签: c++ dll mql4 metatrader4 metatrader5