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

 
fxsaber:
Тогда почему вообще не возникает ошибки? Ведь для uchar-массивов нет перегрузки (если справка не врет).
А вот это - правильный вопрос.
 
fxsaber:
Тогда почему вообще не возникает ошибки? Ведь для uchar-массивов нет перегрузки (если справка не врет).
Видимо потому что массивы идентичны. Разница между char и uchar лишь в интерпретации компилятором.  По сути там и предупреждения быть не должно, ибо ничего не усекается на самом деле, можно убедиться.
 
Alexey Navoykov:
Видимо потому что массивы идентичны. Разница между char и uchar лишь в интерпретации компилятором.  По сути там и предупреждения быть не должно, ибо ничего не усекается на самом деле, можно убедиться.
Там побайтово копируется. Так со всеми signed <-> unsigned.
 
A100:

Но эта (и предыдущие с typedef) - попутно выявленные ошибки - основную я пока не нашел, поскольку в исходной программе нет typedef с одинаковой сигнатурой (как в этом примере).

Удалось составить проверочный скрипт близкий к исходной программе с ошибкой при выполнении

//Script1.mq5
typedef int (*GTW)( uint, uint, int );
#import "Script2.ex5"
        void f( GTW );
#import "Script3.ex5"
        int g( uint, uint, int );
#import
void OnStart() { f( g ); }
//Script2.mq5
#property library
typedef int (*GTW)( uint, uint, int );
void f( GTW ff ) export { ff( 0x1, 0x1, 0 ); }
//Script3.mq5
#property library
int g( uint, uint, int ) export
{
        Print( __FUNCSIG__ );
        return 0;
}

Результат: invalid function pointer call in 'Script2.mq5'

А теперь фокус... - замените GTW во всех файлах допустим на GT и проверьте полученный результат !?!

 

Подскажите по синтаксису, как правильно переделать такую функцию

MqlTick Func()
{
  MqlTick Tick = {0};
  
  return(Tick);
}

 на нечто такое

MqlTick Func()
{
  return(MqlTick(0));
}

или такое

MqlTick Func()
{
  return(new MqlTick);
}

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

 

С недавних пор (с месяц примерно) в обсуждении проектов сервиса 'Работа', после набора хреновой тучи текста с цитатами и иллюстрациями, после отправки всё это улетает в ... дыру #403

 


Никакая повторная отправка формы не помогает - после перезагрузки страницы надо всё набирать заново

Дорогая редакция, поясните, пожалуйста, что за новую революцию на благо пользователей навертели теперь и как от неё уворачиваться?
 
Alexander Puzanov:

С недавних пор (с месяц примерно) в обсуждении проектов сервиса 'Работа', после набора хреновой тучи текста с цитатами и иллюстрациями, после отправки всё это улетает в ... дыру #403

 


Никакая повторная отправка формы не помогает - после перезагрузки страницы надо всё набирать заново

Дорогая редакция, поясните, пожалуйста, что за новую революцию на благо пользователей навертели теперь и как от неё уворачиваться?
В левом-верхнем углу редактора ВСЕГДА перед Отправкой большого сообщения нажимайте кнопку HTML, затем CTRL+A и CTRL+C. Таким образом останется все в буфере. И если возникнет ошибка. То заходим опять через кнопку HTML, затем CTRL+A и CTRL+V. Сбережете кучу нервов.
 
Alexander Puzanov:

С недавних пор (с месяц примерно) в обсуждении проектов сервиса 'Работа', после набора хреновой тучи текста с цитатами и иллюстрациями, после отправки всё это улетает в ... дыру #403

 


Никакая повторная отправка формы не помогает - после перезагрузки страницы надо всё набирать заново

Дорогая редакция, поясните, пожалуйста, что за новую революцию на благо пользователей навертели теперь и как от неё уворачиваться?
Скорее всего был введен анти-CSRF токен.
(некая подпись контролирующая что именно вы будете оправлять сообщение на сайт, а не атакующий от вашего имени через POST запрос из формы на своем сайте).

Токен содержит дату окончания действия и подпись - что то типа MD5 от (дата+сайт+имя пользователя+соль наверное).
Вот эта дата окончания и прострачивается к моменту оправки вашего сообщения.

Аналогичкая заявка от меня:
Улучшить логику по работе с СSRF токеном для раздела servicedesk

Открыта, Начата: 2016.06.26 18:46, #1502446


К сожалению воз и ныне там.

 

 
Эту ошибку исправим в ближайшие дни. Перестарались с защитой.
 

Из личного опыта могу посоветовать:
1) Перед отправкой дублировать страницу и перекопировать на нее текст сообщения. Отправлять все с новой страницы.
2) Если несколько полей для заполнения у формы - то проще было продублировать страницу и скопировать из HTML формы ее анти-CSRF токен (обычно он называется signature__)
Но этот способ уже не удобен, так как подпись начали совать везде где надо и не надо. Сейчас нужно ориентироваться в структуре страницы, что бы найти верную подпись и не ошибиться.

3) Если было оправлено сообщения и получена ошибка 403 в хроме еще можно достать текст сообщения:
- на странице с ошибкой 403 нажимаем F5
- появится сообщение  о повторной попытке оправки POST запроса из формы с просьбой подтвердить
- открываем панель разработчика хрома (F12)
- подтверждаем повторную оправку запроса
- в вкладке Network находи отравленный нами запрос (он должен быть самым первым с ошибкой 403 красного цвета)
- в запросе находим строку "Content-Disposition: form-data; name="body""