Ошибки, баги, вопросы - страница 3530

 
Anatoli Kazharski #:

ChatGPT-4o

Спасибо. Просьба поделиться ссылкой, где формировался вопрос/ответ.

 
fxsaber #:

Спасибо. Просьба поделиться ссылкой, где формировался вопрос/ответ.

https://chatgpt.com/


 
Делаю раз в минуту WebRequest в простом GET-режиме.
WebRequest("GET", URL, NULL, NULL, TimeOut, Post, 0, Data, Headers)

Иногда получаю значение, которое равно тому, что было две минуты назад. Т.е. попадает какая-то кешированная версия Web-страницы.


Как избежать этого кеширования?

 
Andrey Dik #:
Скажите пожалуйста, отсутствие возможности выделять сразу несколько папок в окне - так задумано или это баг?

Так задумано

 
Slava #:

Так задумано

Понятно. Спасибо за ответ. Если поведение функции изменять не планируется, то просьба осветить в справке указав явно, что мультивыбор папок запрещён.

Скажите, пожалуйста, какая для этого причина? Потому что с помощью обычных файловых операций список поддерикторий получить можно без проблем например так:

bool GetNamesAgentFolders (const string filter, C_O_Agents &fAgents [])
{
  ArrayResize (fAgents, 0);
  string found [1];
  long handle = FileFindFirst (filter + "\\*", found [0], FILE_COMMON);

  if (handle != INVALID_HANDLE)
  {
    do
    {
      ResetLastError ();
      if (!FileIsExist (filter + "\\" + found [0], FILE_COMMON))
      {
        if (GetLastError () == 5018)
        {
          found [0] = StringSubstr (found [0], 0, found [0].Length () - 1);
          ArrayResize (fAgents, ArraySize (fAgents) + 1);
          fAgents [ArraySize (fAgents) - 1].FAgents = found [0];
        }
      }
    }
    while (FileFindNext (handle, found [0]));

    FileFindClose (handle);

    return true;
  }

  return false;
}

А с ручным выбором папок с помощью окна было то же самое, но уже осознанно. Проблем с безопасностью не вижу, потому что окно не позволяет выйти выше папки песочницы всё равно. 

 
доброго времени суток, подскажите куда написать о возникшей проблеме в мт5 после последнего обновления, советник не работает .
 
mayancev #:
доброго времени суток, подскажите куда написать о возникшей проблеме в мт5 после последнего обновления, советник не работает .
Что случилось? Как проявляется? Что в журналах пишется? Какая ОС? 
 
после обновления терминала мт5, с графиков пропала программа советник , при перетаскивания программы с навигатора на график программа не активируется
винд 10
 
Andrey Dik #:

Понятно. Спасибо за ответ. Если поведение функции изменять не планируется, то просьба осветить в справке указав явно, что мультивыбор папок запрещён.

Скажите, пожалуйста, какая для этого причина? Потому что с помощью обычных файловых операций список поддерикторий получить можно без проблем например так:

А с ручным выбором папок с помощью окна было то же самое, но уже осознанно. Проблем с безопасностью не вижу, потому что окно не позволяет выйти выше папки песочницы всё равно. 

Что Вы хотите сделать при помощи FileSelectDialog?

Открыть много папок?

Открыть много файлов из многих папок?

Функция изначально предназначалась именно для того, чтобы можно было вручную открыть любой файл на чтение (мультиселект тут идёт бонусом), либо открыть файл для записи

 
Andrey Dik #:
Таким образом, прошу разработчиков добавить в справку этот момент, что дополнительное выделение памяти под массив происходит только в случае ненулевого второго параметра.

Там это явно указанно уже

Andrey Dik #:

Примечание

Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала.

Общее число элементов в массиве не может превышать 2147483647.

При частом распределении памяти рекомендуется использовать третий параметр, задающий резерв для уменьшения количества физического распределения памяти. Все последующие вызовы функции ArrayResize не приводят к физическому перераспределению памяти, а только меняется размер первого измерения массива в пределах зарезервированной памяти. Следует помнить, что третий параметр будет использоваться только тогда, когда будет происходить физическое распределение памяти, например:

ArrayResize(arr,1000,1000);
for(int i=1;i<3000;i++)
   ArrayResize(arr,i,1000);

В данном случае произойдёт 2 перераспределения памяти, один раз до входа в цикл на 3000 итераций, при этом размерность массива будет установлена в 1000 и второй при i равной 2000. Если третий параметр опустить, то произойдёт 2000 физических перераспределения памяти и это замедлит выполнение программы.