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

 
fxsaber # :
Делаю раз в минуту WebRequest в простом GET-режиме.

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


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

При использовании заголовков http проверьте документацию HTTP.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

Cache-Control - HTTP | MDN
Cache-Control - HTTP | MDN
  • 2024.05.17
  • developer.mozilla.org
The HTTP header field holds directives (instructions) — in both requests and responses — that control caching in browsers and shared caches (e.g. Proxies, CDNs). Syntax Cache directives follow these rules: Caching directives are case-insensitive. However, lowercase is recommended because some implementations do not recognize uppercase...
 
Alain Verleyen #:

При использовании заголовков http проверьте документацию HTTP.

Использую без заголовков.
 
Slava #:
Зачем? В документации уже явно написано "FSD_ALLOW_MULTISELECT – разрешает выбирать несколько файлов". Не папок и файлов, а просто файлов

Затем, что другими функциями для работы с файлами и папками получить нужный список папок можно (я показал код), а с помощью функции диалогового окна - нельзя. Это явно наводит на мысль, что функция диалогового окна либо работает не как задумано, либо в справке необходимо прописать явно, что получить список папок так же как и для файлов нельзя (почему нельзя - вопрос уже не так важен, нельзя так нельзя, хотя почему-то другими подобными функциями можно).

 
Vladislav Boyko #:

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

Где там явно указано, что вызов функции с нулевым вторым параметром но при ненулевом третьем не распределит память? Этого в справке не указано.

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

ArrayResize (a, 0, 1000);

что вполне логично, но этого недостаточно, придется писать ещё одну строку перед этой строкой, сначала создав массив с ненулевым размером а потом с нулевым, хотя можно было бы сделать то же самое только одной строкой вместо двух, раз этого явно не указано в справке. Это реально очень тонкий момент, незнание которого может вызывать жуткие тормоза там, где программист не ожидает этого (потому что в справке это не указано явно).

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Andrey Dik, 2024.06.05 07:59

В моём случае нужно делать так:

ArrayResize (a, 10000, 10000);
ArrayResize (a, 0, 10000);

или так:

ArrayResize (a, 1, 10000);
ArrayResize (a, 0, 10000);

что является равнозначным, или так:

ArrayResize (a, 1, 10000);
ArrayResize (a, 0);

Боюсь, выделенный вариант убьет ранее выделенное место под массив.

 
fxsaber #:

Боюсь, выделенный вариант убьет ранее выделенное место под массив.

не убъёт, я уже пробовал.
 
Здесь старый частичный исходник ArrayResize.
 
Andrey Dik #:
не убъёт, я уже пробовал.

Действительно, забыл.

 
Andrey Dik #:

Где там явно указано, что вызов функции с нулевым вторым параметром но при ненулевом третьем не распределит память? Этого в справке не указано.

Как вы думаете, нужно ли физичяески распределять память, когда второй параметр соответствует текущему размеру? Вопрос риторический. Ответ - не нужно. Согласно справке, нет физического распределения - третий параметр игнорируется.

Третий параметр работает только тогда, когда текущего резервного размера не достаточно, что бы увеличить размер в соответствии со вторым параметром.


Если сделать как вы просите - резервировать память одной строкой

ArrayResize (a, 0, 10000);

то любой последующий вызов 

ArrayResize (a, 0, XXX);

управлял бы физической памятью.

 
Vladislav Boyko #:

Как вы думаете, нужно ли физичяески распределять память, когда второй параметр соответствует текущему размеру? Вопрос риторический. Ответ - не нужно. Согласно справке, нет физического распределения - третий параметр игнорируется.

Третий параметр работает только тогда, когда текущего резервного размера не достаточно, что бы увеличить размер в соответствии со вторым параметром.


Если сделать как вы просите - резервировать память одной строкой

то любой последующий вызов 

управлял бы физической памятью.


да, именно! было бы очень удобно.
а если дополнительное выделение/перераспределение памяти не нужно, то можно было бы вызывать без третьего параметра с нулевым вторым параметром.
что логично.