[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 1087

 
itum:

我有一个问题 ....

当我在终端设置中设置邮件时,在SMTP中 - 我使用smtp.gmail.com:25

我得到的错误是 - 邮件:530 5.7.0 必须先发出STARTTLS命令。l3sm2329679fan.0

mail.com服务器上的SMTP服务器需要RFS-2554认证。它是什么,我不知道 - 但在蝙蝠我不得不复制密码和登录框mail.ru,该konnekt滚动。没有它就停止工作--几年前它还能工作,然后他们在那里改变了一些东西。试试smtp.ranbler.ru,端口相同,也许会有效果。
 

伙计,我被这些术语搞糊涂了。我想说的是,如果帮助将我们严格约束在程序结构中的一个地方,静态变量 必须被声明和初始化,而且只有一次,那么所有其他试图给这个变量分配任何其他值,或者给它分配任何值的行为,都应该被编译器视为语法错误。换句话说,根据帮助中给出的定义,静态变量作为常量的容器,在程序运行中不能被改变。句号。但可惜的是,我们刚刚遇到了2起违反这一规则的情况。事实证明,你可以在任何地方声明一个静态变量并随时重新初始化它。嗯,他们应该把它写在帮助中。

我们还发现,这个变量在主程序层面是全局性的,即使它是在一个子程序中声明的。

这是我第一次遇到在子程序内声明全局变量的愚蠢行为--这对理解程序代码来说很混乱。在子程序中声明的变量,其寿命等于或小于子程序的寿命。这是一个经典。为什么元引号需要在子程序内声明一个全局变量的变态行为,人们只能想知道。

 
khorosh:

教程中还有一个使用静态变量的例子,从这个例子中可以看出,它被初始化了一次,否则tick计数器将无法工作。


教程的作者打破了帮助规则--在init()函数之前初始化了一个静态变量。问题是,我们怎样才能初始化一个尚未声明的变量?这是正确的 - 你不能。因此,静态变量必须在init()块之前声明。这是一个简单的绝对论证法。如果A,那么B。A,因此B是绝对论证法的断言方式。如果禁止初始化一个未初始化的变量(A),那么必须先声明它(B),禁令存在(A),因此事先声明该变量是必要的(B)。

事实证明,作者不仅没有在init()块之前初始化一个静态变量,而且还在程序中需要帮助的地方错误地声明了这个变量!在这个问题上,作者的回答是:"我不知道。

 

妈的,这就是它被埋藏的地方。找到了!https://docs.mql4.com/ru/basis/variables/initialization

Любая переменная при определении может быть инициализирована. Любая переменная инициализируется нулем (0), если явно не задано другое начальное значение. Глобальные и статические переменные могут быть проинициализированы только константой соответствующего типа. Локальные переменные могут быть проинициализированы любым выражением, а не только константой.

Инициализация глобальных и статических переменных производится однократно. Инициализация локальных переменных производится каждый раз при вызове соответствующих функций.

帮助的作者对初始化这个词感到困惑。第一段是正确的--术语 "初始化 "是在赋值操作的意义上应用的--也就是说,用一个值来初始化一个变量就是为它赋值。在第二段中,帮助的作者错误地使用了初始化这个词,而不是 "声明一个变量"("定义一个变量")。因此,"全局变量和静态变量的初始化只做一次 "的判断应该是 "全局变量和静态变量的声明只做一次"。否则我们会得到一个荒谬的结果。如果只能初始化一次,这些变量的值就不能在运行时改变。开发人员,请修复这些问题和上面几个帖子中显示的错误!

P.S.

我把 "变量初始化 "和 "变量声明 "混淆了。我在上面的帖子中放了很多错误的术语。:(

 
drknn:

妈的,这就是它被埋藏的地方。找到了!https://docs.mql4.com/ru/basis/variables/initialization

帮助的作者对初始化这个词感到困惑。第一段是正确的--术语 "初始化 "是在赋值操作的意义上应用的--也就是说,用一个值来初始化一个变量就是给它赋值。在第二段中,帮助的作者错误地使用了初始化这个词,而不是 "声明一个变量"("定义一个变量")。因此,"全局变量和静态变量的初始化只做一次 "的判断应该是 "全局变量和静态变量的声明只做一次"。否则我们会得到一个荒谬的结果。如果只能初始化一次,这些变量的值就不能在运行时改变。 开发人员,请修复这些问题和上面几个帖子中显示的错误!

P.S.

我把 "变量初始化 "和 "变量声明 "混淆了。我在上面的帖子中放了很多错误的术语。:(

初始化只执行一次的事实并不意味着在程序执行过程中不能进行可以改变静态变量值的赋值操作。这些操作的区别在于,在初始化中,变量类型的声明与它的原始值的赋值相结合,可以是显式的,也可以是隐式的。至于在init()之前或在任何函数内声明静态变量,这只影响到从声明该变量的函数或任何其他函数中调用该变量的能力。
 

节日快乐,各位。帮助一个傻瓜!请提供一个体面的EA的建议。美分账户Depo现在为60美元

 
khorosh:
因为初始化是一个一次性的操作,这并不意味着可以修改静态变量值的赋值不能在程序执行期间进行。这些操作的区别在于,在初始化过程中,变量类型的声明与它的初始值的赋值相结合,可以是显式的,也可以是隐式的。至于在init()之前或在任何函数内声明一个静态变量,这将影响到只从声明该变量的函数或从任何其他函数调用该变量的可能性。


要明白,虽然归属和识别的概念是对等的,但它们的体积是一样的!这意味着这两个词是同义的!!!。

让我们深入了解一下这个问题的原始来源。我们打开一本英语在线词典。试图翻译识别一词的结果是什么--它被翻译为识别。这个词不是母语,所以我们无法从网上的字典中理解它的意思。让我们去谷歌下载Borovsky的书 "英语-俄语编程词典"。在第128页,我们发现以下内容:http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg,剩下的就是要找出什么是身份。打开Ozhegov的字典。查找字典中的条目。

身份,-a和身份。-a,参看。1.完全的相似性,巧合。D. 观点。2.(身份)。在数学上:平等,对其组成量的任何数值都是真实的。II 形容词相同,-a,-a,和相同,-a,-a(对第一义)。相同的代数表达式。

这就是需要证明的!那么,由于在赋值操作之后,变量的值将与刚刚分配给它的值完全相同,我们得出结论,识别变量和识别变量 是一个相同的操作,这与赋值操作完全相等。因此,我们不得不得出结论: 如果一条规则为一个变量分配了一个且仅有一个标识,而且是在程序结构中严格指定的位置,那么我们就无权为该变量分配另一个值(在其标识之后),因为标识的概念和赋值的概念是同义的 句号。

 
drknn:


只要意识到,虽然归属和识别的概念是等同的,但它们的范围是相同的这意味着这两个词是同义的!!!。

我们深入到这个问题的本源。打开英语在线词典。试图翻译识别一词的结果是什么--它被翻译为识别。这个词不是母语,所以我们无法从网上的字典中理解它的意思。你去谷歌下载Borovsky的书 "英语-俄语编程字典"。在第128页,我们发现以下内容:http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg,剩下的就是要找出什么是身份。打开Ozhegov的字典。查找字典中的条目。

需要证明的是什么!?那么,由于在赋值操作之后,变量的值将与刚刚分配给它的值完全相同,我们得出结论:识别变量和识别变量是同一个操作,完全等同于赋值操作。因此,我们的结论是 如果一条规则为一个变量分配了一个且仅有一个标识,而且是在程序结构中严格指定的位置,那么我们就不能为该变量分配另一个值(在标识之后),因为标识的概念和分配的概念是同义的 句号。

你是在说初始化和识别是同一件事吗?
 
khorosh:
你是在说初始化和识别是同一件事吗?

不,别说了--别把我弄糊涂了。等一下。
 
drknn:

不,别说了--别把我弄糊涂了。等一下。
最初你说的是初始化,但由于某种原因,你改成了识别。
原因: