conststring s2 = s1; // динамическое создание переменной копированием данных из другой переменной (не константной строки)
Print(StringBufferLen(s2)); // показывает 260 верно
MetaEditor позволяет удобно работать над большими проектами: объединять множество файлов в одну структуру, управлять настройками проекта и вести совместную разработку с командой программистов через версионное онлайн-хранилище MQL5 Storage. Что такое проект Проект — это отдельный файл с расширением "MQPROJ", в котором хранятся настройки...
Стилизатор позволяет быстро привести оформление исходного кода к рекомендуемому стандарту. Это делает код легко читаемым, выглядящем профессионально. Грамотно оформленный код гораздо проще читать и анализировать в последующем как его автору, так и другим пользователям. Чтобы запустить стилизатор, нажмите " Стилизатор" в меню "Сервис" или...
执行结果表明,编译器的行为与逻辑相反。
对于一个纯粹的常量字符串,缓冲区的大小由StringBufferlen=0,这意味着该字符串是常量。
重新分配一个 "所谓的 "常数字符串,并不是在用常数工作,而恰恰是在创建一个预先分配了260个字符的动态变量。
对于一个纯粹的常量字符串,缓冲区的大小由StringBufferlen=0,这意味着该字符串是常量。
重新分配一个 "所谓的 "常数字符串并不是在用常数工作,而是在创建一个预先分配了260个字符的动态变量。
是时候引入分配器了)))。
作为提醒,字符串缓冲区有一个错误。
来自DLL的函数可以是任何东西。我建议在MQL中添加一个扩展版的StringToTime 函数,其形式为:。
因为在当前版本中,该函数总是返回有效的时间,即使字符串包含垃圾,也会返回当前日期,这一点特别奇怪。
StringToTime("aaabbbccc")返回 "2019.09.05 01:00:00 "这正常吗? 在这个实现中,该函数对健康来说根本是危险的。 因此,需要一个有正确性检查的版本。
到目前为止,我们必须用自己的函数进行解析,但问题是,时间可以用不同的格式来指定。而且,当时间已经在MQL中实现的时候,我真的不想再编码所有这些格式,重新发明车轮。
基本上,这也适用于其他的字符串转换 函数: StringToInteger, StringToDouble。 也没有为它们提供有效性检查。
p.s. 嗯,原来GetLastError() 在这些情况下会产生错误。 我不知道,这些函数的文档没有这样说。 这消除了问题,尽管用bool会更容易。我支持Alexey的建议,安全处理字符串是避免隐藏错误的关键。
错误 "属性已经存在,但其值不同,将被跳过"。
第一次使用它。其他文件都没有。不取决于价值。建2136。
请带回老式的造型器。
现在我搞不清楚这里应该运行的是什么。
这幅作品以前是这样的。
错误 "属性已经存在,但其值不同,将被跳过"。
第一次使用它。其他文件都没有。不取决于价值。建2136。
在处理项目时,如果源代码中指定的属性值与项目设置中的值冲突,就会发生这个错误。
项目属性
请带回老式的造型器。
现在我搞不清楚这里应该运行的是什么。
这幅作品以前是这样的。
多重嵌套的ifs不能被任何对齐方式所保存。我们需要修改代码,使其具有可读性。
多重嵌套的ifs不能被任何排列组合所保存。你必须修改代码以使其可读。
没有多重嵌套--最高层是if,然后是if else。
我要求的是以前的风格,那时如果其他地方看起来像这样。
- 是在单行上,随后的文本没有向右偏移。
下面是一个来自条件性if-else语句 帮助的例子( 旧的样式器)。
而这就是新的造型器的作用。