Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1109

 
 
polpolpol:

Запускаю установщик, открывается окошко индикатора загрузки файлов.

А потом появляется другое окошко

Установщик требует чтобы я указал настройки прокси-сервера, которого у меня нет.

Антивирь выключить и вызгузить из памяти.
 

Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера.

 

void DeletedOrders()
         {
         for (int i=0; i<=OrdersTotal(), i++)
             {
             if (OrderSelect(i,SELECT_BY_POS))
                type=OrderType();
             if (type==2 || type==3 || type==4 || type==5)
                OrderDelete(i,clrNONE);
             }
         return();
         }  
 
bobrush:

Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера. 

Нет, конечно. Тикет надо указывать, а не порядковый номер в цикле:  OrderDelete(OrderTicket(),clrNONE); 

 Ну и  условие достаточно такое: if(type>1).

И вывод кода ошибки рекомендую почаще делать, помогает. 

Ах, да, функции типа "void" ничего не должны возвращать, не нужен return() в штатном исполнении, только при предусмотренном каким-либо условием преждевременном выходе из функции.

 
bobrush:

Здравствуйте. Будет ли корректна следующая запись? Функция при вызове должна удалить все отложенные ордера. 

Имейте в виду, что есть еще недокументированные типы ордеров с type=6 и с type=7 соответственно для операций над балансом и над кредитом счета.

Вместо i<=OrdersTotal() лучше было бы i<OrdersTotal(), без лишнего вызова OrderSelect

И цикл надо проходить от конца к началу.  В противном случае, если массив ордеров успел обновиться после удаления i-го элемента в нем, попавший на  i-е место бывший i+1-м элемент будет пропущен. Лучше начинать с конца.

Если учесть, что разработчики не гарантируют никакой упорядоченности в массиве ордеров, то, собственно, нет и гарантии того, что последовательность ордеров в их массиве после удаления одного из них сохранится. Совсем надежно было бы сделать так. Крутим цикл до выявления отложенного ордера. Цикл прекращаем. Удаляем найденный ордер. Ждем  Sleep (100) для обновления массива ордеров. Затем опять цикл поиска отложенного ордера, уже с новым массивом ордеров. Полный перебор, а не путем возобновления прежнего цикла. И так тройками (цикл поиска, удаление одного ордера, ожидание обновления массива) до момента, когда отложенный ордер найти уже не удастся.

 
evillive:

Нет, конечно. Тикет надо указывать, а не порядковый номер в цикле:  OrderDelete(OrderTicket(),clrNONE); 

 Ну и  условие достаточно такое: if(type>1).

И вывод кода ошибки рекомендую почаще делать, помогает. 

Ах, да, функции типа "void" ничего не должны возвращать, не нужен return() в штатном исполнении, только при предусмотренном каким-либо условием преждевременном выходе из функции.


Спасибо!
 
Vlad143:

Имейте в виду, что есть еще недокументированные типы ордеров с type=6 и с type=7 соответственно для операций над балансом и над кредитом счета.

Вместо i<=OrdersTotal() лучше было бы i<OrdersTotal(), без лишнего вызова OrderSelect

И цикл надо проходить от конца к началу.  В противном случае, если массив ордеров успел обновиться после удаления i-го элемента в нем, попавший на  i-е место бывший i+1-м элемент будет пропущен. Лучше начинать с конца.

Если учесть, что разработчики не гарантируют никакой упорядоченности в массиве ордеров, то, собственно, нет и гарантии того, что последовательность ордеров в их массиве после удаления одного из них сохранится. Совсем надежно было бы сделать так. Крутим цикл до выявления отложенного ордера. Цикл прекращаем. Удаляем найденный ордер. Ждем  Sleep (100) для обновления массива ордеров. Затем опять цикл поиска отложенного ордера, уже с новым массивом ордеров. Полный перебор, а не путем возобновления прежнего цикла. И так тройками (цикл поиска, удаление одного ордера, ожидание обновления массива) до момента, когда отложенный ордер найти уже не удастся.


Т.е. for(OrdersTotal()-1,i=0,i--) и в конце цикла sleep и break?
 
Vlad143:   Ждем  Sleep (100) для обновления массива ордеров.
ИМХО, IMHO, Мое личное мнение вместо  Sleep (100) лучше   while(!RefreshRates()); обязательно точка с запятой в конце
 
bobrush:

Т.е. for(OrdersTotal()-1,i=0,i--) и в конце цикла sleep и break?

порядок верный, слип и брэйк не нужны, если и пропустит какой ордер, на следующем тике удалит.
 
evillive:

 

Антивирь выключить и вызгузить из памяти.

Всё это я уже проделал.

Удалял антивирус, удалял файерволл, чистил память.

Толку никакого.

В прежние времена не было такой хрени когда на ПК загружается файл-установщик только, а потом этот файл запускался и он производил бы установку терминала откуда то из интернета.

На ПК скачивался ВЕСЬ дистрибутив программы и установка производилась из папки на этом же ПК.

Всё это из-за появления т.н. "рблачных технологий".

А пользователи этих технологий не знают и не берут в расчёт, что на Земле ещё имеются такие места, где эти технологии использоваться не могут.

Невозможно. Либо их использование стоит денег.

Мне мой интернет в месяц стоит от 200 до 600 долларов в месяц.

Большинству же из тех, кто тему читает всего 10-15 долларов за то же время.


Поэтому мне для установки терминала нужен ВЕСЬ дистрибутив, а не один только файл *.exe

Иначе мне установку терминала не сделать.


Аналогичным образом я обновляю программу  Adobe Flash Player , т.е скачиваю полный дистрибутив на ПК, благо, что это можно, а потом произвожу обновление, которое заключается в установке новой версии поверх старой.

А почему тут так нельзя?


И получается такая хрень.