Ошибки, баги, вопросы - страница 2566
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При данном кастинге нет потери данных. Либо 0, либо не 0.
Другое дело, когда имеет место кастинг double -> любой целочисленный тип (до int32 включительно)
Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях
Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях
Согласен
Здесь тоже в этом смысле нет потери данных (либо 0, либо не 0)
а предупреждение есть. Ожидалось единообразие подхода
Результат попытки доступа к свойству экземпляра класса из статической функции этого же класса:
Компилятор до этого молчал.Не инициализирует пустую строку терминальным нулём.
Результат
Ожидалось
Примечание в справке к функции StringInit
По факту не какого распределения не происходит.
т.е распределение таким способом, десять пробелов
не то же самое, что
И как то не сходится логика поведения, в тексте справки выделенное красным.
Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях
не работают на булевые операции предупреждения, сейчас случайно заметил опечатку в коде у себя, вот воспроизвел:
Не инициализирует пустую строку терминальным нулём.
Результат
Ожидалось
Примечание в справке к функции 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.