Рад представить ещё одно детище из той же библиотеки, которая выносит мне моск уже некоторый день, в подряд:rolf: Вещи интересные, потом я всё-таки её осилю. Новый головняк ещё интереснее. Вот что имеем:
В глобальным переменных есть:
Ниже по коду ей ничего не присваивается.
Вот интересующая меня функция:
void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0)
{
//----
if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
{
if (fi_Ticket > 0)
{
bs_Symbol = OrderSymbol();
}
else
{
bs_Symbol = fs_Symbol;
}
if (bs_Symbol == Symbol())
{
bi_SymDigits = Digits;
bd_SymPoint = Point;
}
else
{
bi_SymDigits = MarketInfo (fs_Symbol, MODE_DIGITS);
bd_SymPoint = MarketInfo (fs_Symbol, MODE_POINT);
}
if (bd_SymPoint == 0.0)
{
bd_SymPoint = fGet_Point (fs_Symbol);
}
}
if (fi_Ticket > 0)
{
fGet_OrderDetails (fi_Ticket);
}
//---- Получаем текущие цены по инструменту
RefreshRates();
bda_Price[0] = NDD (fGet_TradePrice (0, bb_RealTrade, bs_Symbol));
bda_Price[1] = NDD (fGet_TradePrice (1, bb_RealTrade, bs_Symbol));
bd_Spread = NDD (bda_Price[1] - bda_Price[0]);
//----
}
Смотреть на всю цепочку
не обязательно. Интересуют общие аспекты.
В данный момент есть 2 вопроса по данной структуре:
1. Для чего в данном условии:
if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
Сравнение символа передаваемого в функцию с
bs_Symbol ? Ведь у
bs_Symbol нет никакого значения вообще.. Но тип то
string у данной переменной.. По умолчанию
bs_Symbol как и любая переменная нулём инициализируется не явно что-ли?
2. Как может быть истинным условие:
если значение
bs_Symbol не задано?