Ошибки, баги, вопросы - страница 2566
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях
не работают на булевые операции предупреждения, сейчас случайно заметил опечатку в коде у себя, вот воспроизвел:
Не инициализирует пустую строку терминальным нулём.
Результат
Ожидалось
Примечание в справке к функции 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
Ещё раз спасибо.