Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
sizeof() вернет количество байт, соответствующих указанному типу данных. Для строки это всегда будет одно и то же значение, т. к. определяется только размер указателя на строку, а не длина строки:
Результат:
Да, только FileWrite. Но тогда придется позаботиться о сериализации строк и их массивов. Наиболее простой вариант - StringToShortArray(). Но это не универсально. Нужно осторожно походить к таким моментам.
Ясно! Спасибо!
Поробовал просто записать, без StringToShortArray()... Вроде пишет int и string без проблем
Что-то какая-то муть. Код должен писать string и int (инты из массива):
Сначала в массиве в первом измерении было 1000.
Во время записи постоянно, где-то после половины массива (итерации, приблизительно после 500) скрипт начинал заходить в:
Ошибки не печатает (ноль постоянно). Зато печатает байты, непонятно откуда взявшиеся. Типа:
Решил уменьшить в двое первое измерение, до 500. Не помогло. С половины (приблизительно после 250 шага) итерации ( в данном случае откуда и покуда не сильно важно - всегда после половины где-то начинается) пишет, что записано 64 байт(иногда - 56), хотя в ячейках массива стоят нули. Нули так же в отчете:
Далее, ближе к концу итерации, идет в разнобой. В журнале пишет, что записано 79 (или 71,80,84...) байтов (как в примере ранее). В отчете какие-то циферки появиляются тож:
Так же, в качестве решения, в справке нашел функцию FileFlush. И поставил чтобы скрипт скидал все на диск после каждой сотой итерации.
Ну это я так, пальцем в небо. Все равно не помогло.
Последнее что делал: после расчетов, перед записью данных в отчет, все ячейки массива после 230 измерения заполнил нулями :
Скрипт перестал лить дичь в отчет. Всякие непонятные большие циферки исчезли. Решение грубое и неполноценное, потому как журнал все равно пишет ошибки. Хотя теперь все данные занимают 64 байта.
Я пробовал перед расчетами заполнять массив - не помогало.
Хотя при расчетах, мне кажется, дикие циферки не могли появиться. Умножения нет, только простое инкрементирование и запись в массив (при итерационном цикле от 0 до 6336, число 386005568 не может появится же). Кроме того, большие циферки в отчете не появляются в какой-то определенной ячейке(согласно массиву) - в разнобой все происходит. То есть, в двух идентичных отчетах, при совершенно одинаковых параметрах, большие циферки в отчетах появляются в разных местах и с разными значениями. Посмотрите сами в прикрепленных репортах в конце....
Что это может быть?
sizeof() вернет количество байт, соответствующих указанному типу данных. Для строки это всегда будет одно и то же значение, т. к. определяется только размер указателя на строку, а не длина строки:
Результат:
Да, только FileWrite. Но тогда придется позаботиться о сериализации строк и их массивов. Наиболее простой вариант - StringToShortArray(). Но это не универсально. Нужно осторожно походить к таким моментам.
Николай Казанцев в mql4 справочнике очень мало про это ...