По факту не какого распределения не происходит. т.е распределение таким способом, десять пробелов
не то же самое, что
И как то не сходится логика поведения, в тексте справки выделенное красным.
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера. StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера. StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера. StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
Это понятно, речь об инициализации строки терминальными нулями. Почему бы в StringInit(str, 10, 0); не заполнить десятью терминальными нулями ? И вернуть реальную длину строки. Если нужно инициализировать пустую строку, без заполнения! к примеру в 100 символов, тогда или 100 пробелов в виде str = " много тыканий в клаву ", или инициализировать мусором StringInit(str, 100, 65) Не пойму зачем инициализировать мусором, его и так хватает ))
Это понятно, речь об инициализации строки терминальными нулями. Почему бы в StringInit(str, 10, 0); не заполнить десятью терминальными нулями ? И вернуть реальную длину строки. Если нужно инициализировать пустую строку, без заполнения! к примеру в 100 символов, тогда или 100 пробелов в виде str = " много тыканий в клаву ", или инициализировать мусором StringInit(str, 100, 65) Не пойму зачем инициализировать мусором, его и так хватает ))
А с чего взяли, что не заполняется? Просто длина в мкл стринге не хранится, а узнаётся по терминальному нулю.
StringInit(str, 100, ' ');
не?
А если нужны именно нули, то где-то в недрах мкл стд есть класс String.
А с чего взяли, что не заполняется? Просто длина в мкл стринге не хранится, а узнаётся по терминальному нулю.
не?
А если нужны именно нули, то где-то в недрах мкл стд есть класс String.
Не.. Так тоже возвращает ноль. Да и третий параметр ushort, требует целочисленный код символа.
Если инициализирую в виде str = " "; а потом передаю данные из dll то всё норм. А если инициализирую StringInit(str, 10, 0) то данные не поступают. Потому что не выделена память для строки нужного размера.
Если бы был код для пробела, возможно бы и сработало, но что то я не нашёл такой код в разных таблицах. Нужно выделить именно память под количество будущих символов, которые потом поступят в уже инициализированную, пустую строку. Но мусором инициализировать строку, не комильфо. По этому StringInit(str, 100, 0); должен заполняться терминальными нолями, и возращать длину 100.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях
не работают на булевые операции предупреждения, сейчас случайно заметил опечатку в коде у себя, вот воспроизвел:
Не инициализирует пустую строку терминальным нулём.
Результат
Ожидалось
Примечание в справке к функции StringInit
По факту не какого распределения не происходит.
т.е распределение таким способом, десять пробелов
не то же самое, что
И как то не сходится логика поведения, в тексте справки выделенное красным.
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера. StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера. StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
А то он сам не знает
Вы упустили из виду функцию StringBufferLen - она возвращает размер выделенного буфера.
StringLen возвращает длину строки, то есть до терминального символа, соответственно, если он в самом начале - длина 0. Буфер != строка.
Это понятно, речь об инициализации строки терминальными нулями.
Почему бы в StringInit(str, 10, 0); не заполнить десятью терминальными нулями ? И вернуть реальную длину строки.
Если нужно инициализировать пустую строку, без заполнения! к примеру в 100 символов,
тогда или 100 пробелов в виде str = " много тыканий в клаву ", или инициализировать мусором StringInit(str, 100, 65)
Не пойму зачем инициализировать мусором, его и так хватает ))
Это понятно, речь об инициализации строки терминальными нулями.
Почему бы в StringInit(str, 10, 0); не заполнить десятью терминальными нулями ? И вернуть реальную длину строки.
Если нужно инициализировать пустую строку, без заполнения! к примеру в 100 символов,
тогда или 100 пробелов в виде str = " много тыканий в клаву ", или инициализировать мусором StringInit(str, 100, 65)
Не пойму зачем инициализировать мусором, его и так хватает ))
А с чего взяли, что не заполняется? Просто длина в мкл стринге не хранится, а узнаётся по терминальному нулю.
не?
А если нужны именно нули, то где-то в недрах мкл стд есть класс String.
А с чего взяли, что не заполняется? Просто длина в мкл стринге не хранится, а узнаётся по терминальному нулю.
не?
А если нужны именно нули, то где-то в недрах мкл стд есть класс String.
Не.. Так тоже возвращает ноль. Да и третий параметр ushort, требует целочисленный код символа.
Если инициализирую в виде str = " "; а потом передаю данные из dll то всё норм.
А если инициализирую StringInit(str, 10, 0) то данные не поступают. Потому что не выделена память для строки нужного размера.
Если бы был код для пробела, возможно бы и сработало, но что то я не нашёл такой код в разных таблицах.
Нужно выделить именно память под количество будущих символов, которые потом поступят в уже инициализированную, пустую строку.
Но мусором инициализировать строку, не комильфо.
По этому StringInit(str, 100, 0); должен заполняться терминальными нолями, и возращать длину 100.
Если бы был код для пробела, возможно бы и сработало, но что то я не нашёл такой код в разных таблицах.
)) Дублирую
)) Дублирую
Вкурил )) что одинарные кавычки.
Вроде то что надо, возвращает указанное число.
Спасибо Vict, а то я замучался искать целочисленный код.
И в справке об этом не слова.
замучался искать целочисленный код.
0x20
0x20
Воо, по хексу и Dec нашёлся, 32
Ещё раз спасибо.