Как проверить, выбран ли ордер
О конструкции if(OrderSelect(ticket,SELECT_BY_TICKET)){} не слыхали , не ?
ticket то неизвестен, вы хоть вникли в вопрос?
тогда что это ???
int tick=OrderTicket();
тогда что это ???
Это то, что генерирует ошибку 4105 если ордер не выбран, задача избежать генерации этой ошибки, но при этом узнать тикет ордера, если он выбран ранее
ответ: сначала выберите ордер.
Как я могу выбрать ордер, если я не знаю его тикет?
Короче уважаемый FAQ, либо попытайтесь понять вопрос либо не пишите попусту
Короче уважаемый FAQ, либо попытайтесь понять вопрос либо не пишите попусту
Уважаемый, если бы у вас в голове, было бы хоть капля разума, то вы бы поняли что :
1) ваш вопрос по сути бессмысленен.
2) не стоит хамить, тем более когда вам пытаются помочь.
Как максимально корректно организовать проверку на то, выбран ли в данный момент ордер?
В частности это нужно для многих функций, которые работают с ордерами, чтобы запоминать текущий выбранный ордер при начале работы функции и восстанавливать выбор ордера при завершении, чтобы выбор ордера из-за выполнения функции не сбивался (это приводит иногда к трудно обнаружимым ошибкам).
Если сделать так:
void SomeFunс()
{
int tick=OrderTicket();
// .....
if(tick>0) OrderSelect(tick,SELECT_BY_TICKET);
}
То на первой строчке будет генерироваться ошибка 4105, если текущий ордер не выбран, что разумеется нежелательно. Если перед этим сбрасывать last error и проверять после этого наличие ошибки, то у нас сбросится информация о последней ошибке, что также нежелательно, если последняя ошибка должна анализироваться позже в каком-то определенном месте кода.
Как решить эту задачу без генерирования ошибки 4105 если текущий ордер не выбран?