Библиотеки: TradeTransactions - страница 6

 
Напомните, плиз, мне кажется уже правили подобную ошибку, но я опять на неё наткнулся и потерял кучу часов. Похоже, что в Convert.mqh размер целевого массива урезается. Нужно было массив uchar[39] положить в ресурс, а в функции ArrayToStruct приемник типа uint[] упорно считается размером 9, то есть 3 последних символа пропадают.
 
Stanislav Korotky:
Напомните, плиз, мне кажется уже правили подобную ошибку, но я опять на неё наткнулся и потерял кучу часов. Похоже, что в Convert.mqh размер целевого массива урезается. Нужно было массив uchar[39] положить в ресурс, а в функции ArrayToStruct приемник типа uint[] упорно считается размером 9, то есть 3 последних символа пропадают.

Да, обрезается. Попробуйте так

    const int SizeTarget = ::ArrayResize(Dst_Array, SizeSource * sizeof(SOURCE) / sizeof(TARGET) +
                                                    (bool)(SizeSource * sizeof(SOURCE) % sizeof(TARGET)));
 

Судя по рекомендациям MQ, в файле ResourceData, в методе GetFullName должна использоваться константа TERMINAL_DATA_PATH вместо TERMINAL_PATH.

У меня оба пути одинаковы, несмотря на то, что терминал запускается без portable-режима (видимо потому, что UAC отключен и есть права на запись в Program Files). Но если подключаться по RDP, все исходники берутся из Roaming. У многих пользователей, наверно, по-умолчанию все исходники в TERMINAL_DATA_PATH (отличном от TERMINAL_PATH).

 
Stanislav Korotky:

Судя по рекомендациям MQ, в файле ResourceData, в методе GetFullName должна использоваться константа TERMINAL_DATA_PATH вместо TERMINAL_PATH.

Наверное, так. Использую portable, поэтому не обращал внимание. Эти коды используются единицами. Как и Вы, пользователи давно поправили пути на нужные.

Сложно заниматься поддержкой КБ, список работ толстым стал.

 
fxsaber:

Да, обрезается. Попробуйте так

Я у себя в вызывающем коде сделал выравнивание (дополнение) по 4 байтам, а Convert.mqh не стал править - все-таки он из вашей папки include берется и может перезаписаться, так что лучше в КБ поправить (кстати, я не очень понял, какой проект является основным для заголовочных файлов Convert.mqh, Resource.mqh и ResourceData.mqh - может не туда пишу).

 
Stanislav Korotky:

Я у себя в вызывающем коде сделал выравнивание (дополнение) по 4 байтам, а Convert.mqh не стал править - все-таки он из вашей папки include берется и может перезаписаться, так что лучше в КБ поправить (кстати, я не очень понял, какой проект является основным для заголовочных файлов Convert.mqh, Resource.mqh и ResourceData.mqh - может не туда пишу).

TradeTransactions не использую.


HistoryTicks - без него не представляю торговлю в MT4. Наверное, его правильно считать основным. Но я не могу его обновить в КБ.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: HistoryTicks

fxsaber, 2020.01.09 14:43

Не заметил, что в КБ версия старая. К сожалению, обновить не получается. Автомат КБ выдает такое
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
В ME все компилируется без ошибок.


В HistoryTicks ответственности на порядки больше, т.к. это реал. Вылизывалась на практике.

 
fxsaber:

解决该错误,用 随附的 替换 Include \ fxsaber \ TradeTransactions \ Convert.mqh

const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__); 

const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__); 

const RESOURCEDATA<string>ResourceString("::String_"+__FILE__); 


'Data' - struct undefined Convert.mqh 85 49

   in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uint,TARGET=datetime] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
   in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=datetime,TARGET=uint] Convert.mqh 29 14
string cannot be used as union member Convert.mqh 11 12
   in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uint,TARGET=string] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 85 49
   in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uint,TARGET=string] Convert.mqh 70 14
string cannot be used as union member Convert.mqh 13 12
   in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string cannot be used as union member Convert.mqh 13 12
   in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string cannot be used as union member Convert.mqh 13 12
   in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=string,TARGET=uint] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
   in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=string,TARGET=uint] Convert.mqh 29 14



Is it didn't work in MT4 build 1320 ?    


 
roaddust:

Is it didn't work in MT4 build 1320 ?

Try this.

 
fxsaber

试试 这个

Thansk to replay. I had used this version,but the same error. 

 
roaddust:

Thansk to replay. I had used this version,but the same error. 

Source?