Еще одно наблюдения. Я третьего дня поднимал аналогичный вопрос,
но в более общем виде: Как определить пустую строковую переменную? Были предложены решения выхода из этой ситуации (спасибо откливнушимся),
но вопрос так и остался открытым. Поскольку остальные не придали
значения обсуждению (как разработчики, так и тредстартер, пока
его тот же петух в то ж-ж-е место не клюнул ;), я пользуюсь случаем
спросить авторитетного мнения Rosh'а:
Я не силен в Си, и траблы с передачей строковых переменных в dll
не могу объяснить. Сам как-то наступал на такие грабли (Crash в "About"). Хотя с тех пор я лучше представляю механизм распределения
памяти под переменные, но давать советы и решения все же не берусь.
Благодарю за ссылку. Изучу на досуге. Буду на Ваших граблях учиться
:)
В своё время мы убрали вывод в лог сообщений об ошибках 4002, 4008
и 4009. Вызовите GetLastError() после первого же обращения к неинициализированной
строке массива и Вы получите 4009.
В своё время мы убрали вывод в лог сообщений об ошибках 4002, 4008
и 4009. Вызовите GetLastError() после первого же обращения к неинициализированной строке
массива и Вы получите 4009.
Но вообще опертор типа PosComments[i] = PosComments[i] + "Z" есть эквивалент
работы со строковаой переменной
string CommentStr;
CommentStr = CommentStr + "Z";
Во втором случае тоже надо инициализировать сначала строку
явно?
Мне же кажется, если применяется оператор CommentStr + "Z" к неинициализированной
строке, то она должна по умолчанию быть инициализировна пустой
строкой и выделена память для строкового объекта CommentStr. Хотя
возможно это замедлит выполнение оператор объединения строк
"+". Но не думаю что условие проверки скрадёт много процессорного
времени.
Не хочется после каждого оператрока вызывать GetLastError особенно где очевидно поведение. Не хочется захламлять код
ненужными проверками, где они впринципе не нужны.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Еще одно наблюдения. Я третьего дня поднимал аналогичный вопрос, но в более общем виде: Как определить пустую строковую переменную? Были предложены решения выхода из этой ситуации (спасибо откливнушимся), но вопрос так и остался открытым. Поскольку остальные не придали значения обсуждению (как разработчики, так и тредстартер, пока его тот же петух в то ж-ж-е место не клюнул ;), я пользуюсь случаем спросить авторитетного мнения Rosh'а:
Благодарю за ссылку. Изучу на досуге. Буду на Ваших граблях учиться :)
Да, совет Роша помог. Спасибо!
В своё время мы убрали вывод в лог сообщений об ошибках 4002, 4008 и 4009. Вызовите GetLastError() после первого же обращения к неинициализированной строке массива и Вы получите 4009.
В своё время мы убрали вывод в лог сообщений об ошибках 4002, 4008 и 4009. Вызовите GetLastError() после первого же обращения к неинициализированной строке массива и Вы получите 4009.
Но вообще опертор типа PosComments[i] = PosComments[i] + "Z" есть эквивалент работы со строковаой переменной
string CommentStr;
CommentStr = CommentStr + "Z";
Во втором случае тоже надо инициализировать сначала строку явно?
Мне же кажется, если применяется оператор CommentStr + "Z" к неинициализированной строке, то она должна по умолчанию быть инициализировна пустой строкой и выделена память для строкового объекта CommentStr. Хотя возможно это замедлит выполнение оператор объединения строк "+". Но не думаю что условие проверки скрадёт много процессорного времени.
Не хочется после каждого оператрока вызывать GetLastError особенно где очевидно поведение. Не хочется захламлять код ненужными проверками, где они впринципе не нужны.