Если в библиотеках описывать глобальные переменные в виде стоковых массивов, то впоследствии в библиотечных ф-ях они оказываются непроинициализированными. В чем может быть проблема? Или это так и должно быть?
- Описание глоб.переменных в библиотеках?
- Пожалуйста помогите разобраться с этим !
- Глобальные переменные и тестирование
Приведите пример, пожалуйста.
Какие именно библиотеки (MQ4 или EX4)?
Какие именно библиотеки (MQ4 или EX4)?
//Вот тело библиотеки
#property library
//---- Подключаемые модули
/*
#include ...
#import ...
...
#import
*/
//---- *******************
//---- Инициализация глобальных переменных
//...
int temp=123;
string loginsAllowed[10]; //строковый массив ...
loginsAllowed[0]=".....0";
loginsAllowed[1]=".....1";
loginsAllowed[2]=".....2";
loginsAllowed[3]=".....3";
//...
//---- ***********************************
void firstFunction()
{
Print(temp);
}
//********************************************* SomeFunction *********************************************
bool someFunction()
{
int arrSize=ArraySize(loginsAllowed);
for(int i=0; i<arrSize; i++)
{
Print(loginsAllowed[i]);
}
return (false);
}
//**********************************************************************************************************************
//А вот тело скрипта, импортирующего ф-ии из нее
#property copyright "Copyright © 2005, Maxim Markin"
#property link "...."
#import "aaaaaa.ex4"
void firstFunction();
bool someFunction();
#import
//---- *****************************
//*********************************************** Функция скрипта ************************************************
int start()
{
someFunction();
return(0);
}
//****************************************************************************************************************
########################################
Все довольно просто, НО
в рез-те выполнения скрипта БЕЗ импорта ф-ии "void firstFunction();" и ее описания все замечательно работает - выводит элементы массива (частично заполненные)
при описании и импорте ф-ии "void firstFunction();" - все элементы "IS NULL"
В чем может быть дело?
В принципе я нашел способ обойти эту неприятность, но было-бы интересно узнать в чем здесь загвоздка
заранее благодарен...
#property library
//---- Подключаемые модули
/*
#include ...
#import ...
...
#import
*/
//---- *******************
//---- Инициализация глобальных переменных
//...
int temp=123;
string loginsAllowed[10]; //строковый массив ...
loginsAllowed[0]=".....0";
loginsAllowed[1]=".....1";
loginsAllowed[2]=".....2";
loginsAllowed[3]=".....3";
//...
//---- ***********************************
void firstFunction()
{
Print(temp);
}
//********************************************* SomeFunction *********************************************
bool someFunction()
{
int arrSize=ArraySize(loginsAllowed);
for(int i=0; i<arrSize; i++)
{
Print(loginsAllowed[i]);
}
return (false);
}
//**********************************************************************************************************************
//А вот тело скрипта, импортирующего ф-ии из нее
#property copyright "Copyright © 2005, Maxim Markin"
#property link "...."
#import "aaaaaa.ex4"
void firstFunction();
bool someFunction();
#import
//---- *****************************
//*********************************************** Функция скрипта ************************************************
int start()
{
someFunction();
return(0);
}
//****************************************************************************************************************
########################################
Все довольно просто, НО
в рез-те выполнения скрипта БЕЗ импорта ф-ии "void firstFunction();" и ее описания все замечательно работает - выводит элементы массива (частично заполненные)
при описании и импорте ф-ии "void firstFunction();" - все элементы "IS NULL"
В чем может быть дело?
В принципе я нашел способ обойти эту неприятность, но было-бы интересно узнать в чем здесь загвоздка
заранее благодарен...
Так нельзя инициализировать массив в _блоке_описания_переменных_.
loginsAllowed[3]=".....3"; - это полноценная _операция_, а не _инициализация_ массива.
Массивы инициализируются так:
string loginsAllowed[10]={ "1","2",... };
loginsAllowed[3]=".....3"; - это полноценная _операция_, а не _инициализация_ массива.
Массивы инициализируются так:
string loginsAllowed[10]={ "1","2",... };
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь