从专业人员到超级专业人员的任何问题 - 1。 - 页 3 12345678910...45 新评论 VonDo Mix 2011.01.21 06:09 #21 圣洁的简单 (c) 扬-胡斯 Владимир Тезис 2011.01.21 06:11 #22 Sorento: 圣洁的简单 (c) 扬-胡斯 你是什么意思? VonDo Mix 2011.01.21 06:28 #23 drknn: 你是什么意思?这不是那么简单。 现在在函数中--与传递的变量一起工作。 正如数学告诉我们的那样--如果你通过地址传递一个伪变量--其中所有的奇迹都会消失。 但如果地址池是用常数排成的--一切都会不同。 0变成1,反之亦然。 ;) Владимир Тезис 2011.01.21 06:31 #24 为什么在EA/指标/脚本中需要如此复杂的东西,例如按地址传递变量?你说的术语是什么意思:伪变量、地址池和恒定对齐? VonDo Mix 2011.01.21 06:42 #25 drknn: 为什么在EA/指标/脚本中需要如此复杂的东西,比如按地址传递变量?你说的术语是什么意思:伪变量、地址池和恒定对齐? 编译器和解释器是相似的。 所以,请想一想。 如何将参数(变量)传递给函数,如果将表达式传递给函数... ;) Vladyslav Goshkov 2011.01.21 08:18 #26 Sorento:我也有疑虑。我不假装是一个超级专业人员,我没有达到专业人员的水平--没有人读消息......这是很清楚的马眼。但我写的代码越多(到目前为止不多)--就会出现一个问题。函数中的参数是如何传递的?(按名称还是按价值?)我有一个怀疑,字符串变量在传递的时候会出现抖动...;)虽然我不认为自己是专家或超级专家,但我会试着回答:)。 MT是用C2C++实现的,开发人员建议在有任何不确定的情况下参考该语言的标准。 根据C2C++标准,除数组外的所有参数都是以值传递的,包括表达式。也就是说,参数的副本被传递:在一个被调用的函数 内改变一个以值传递的参数,不会导致外部调用函数中的参数被改变。如果需要改变,必须通过引用(通过地址)来传递,即传递作为参数传递的变量所在的地址。那么位于这个地址的值可以被改变,地址不能被改变。所有的数组都是通过引用传递的,也就是说,地址是立即传递的:否则,大量的数据将不得不在堆栈中复制。 为了防止通过引用传递的参数在被调用的函数中被改变,C/C++使用const 修饰符。 在C2C++中,字符串是字符数组,但有一点不同:这样的数组必须以字符串终止符'\0'结束。 在MCL中,字符串是一个包含字符串大小和指针的结构(即字符串数组本身),如果这些例子是可信的。 这个例子是针对C2C++的。 //---- struct MqlStr { int len; char *string; }; 这里char *是一个指向字符类型(char类型)变量的指针。指针类型本身(char*, int*, double*.......)总是一个整数--它是一个单元地址。这意味着该变量不是存储一个字符串,而是一个单元格地址。字符本身的值可以像这样被检索。*字符串或字符串[0]。为了工作,我们应该总是为一个数组分配内存,除非它是静态排列的,即它的大小没有在描述中指定,如 char string[1025] ; 是一个字符数组,有1025个元素....。如果最后一个字符(string[1024]='\0'),数组可以被视为一个1024个字符的字符串。 字符串元素可以作为通常的数组string[i]的元素被接收。当动态放置时,一个字符串被分配+1个元素,字符串结尾的最后一个字符是...... 因此,字符串总是通过引用来传递。是否禁止修改它取决于ICL的实现,可以用例子来检查:把一个字符串传给函数,在那里改变值,并在被调用的函数结束后读取它(这个值)。 好运。 Vadim Zhunko 2011.01.21 12:05 #27 VladislavVG: 因此,字符串总是通过引用来传递。它们是否可以被修改取决于MCL的实现,可以用一个例子来检查:把一个字符串传给一个函数,在那里改变数值,并在被调用的函数结束后读取它(这个数值)。 不禁止修改。已检查。 Vadim Zhunko 2011.01.21 12:08 #28 drknn: 哦,胡说八道。这一定是开发人员的问题,或者DLL中的一切都不对。我不是一个C++程序员--曾经试着做了几个程序,但我遇到过,当你安装了C++外壳时,一切都能正常工作。但是当你把可执行文件转移到另一台电脑上时,你会立即注意到缺少一些dll-cycle。我也不喜欢和弦子一起工作。我放弃了那门语言,而选择了Delphi。也许你可以尝试在上面制作你的dll--这样的dll在终端是很正常的... P.S. 因此,我不明白为什么每个人都如此赞扬C++,如果甚至在选择外壳进行编程的层面上,这种语言都会出现问题...... 问题是,如果你在图表上手动加载这些库和脚本,它们都能正常工作。如果你从当前进程中以编程方式将它们加载到图表上,它们也可以工作。 当你从一个远程进程加载它们时,问题就发生了。 ===================================== 关于将代码转移到另一台电脑上。最有可能的是你正在迁移一个调试器版本。它从Studio中提取调试库。你应该已经编译好了版本。那么所有的东西都会在各地发挥作用。 TheXpert 2011.01.21 13:49 #29 我错了,我叫它类比。 Владимир Тезис 2011.01.21 13:51 #30 TheXpert: 我错了,我叫它类比。 对。我甚至对这个主题的标题条款眨了眨眼--我没有注意到名字是不同的--我的注意力已经被调到一个特定的模式。 12345678910...45 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
圣洁的简单 (c) 扬-胡斯
你是什么意思?
你是什么意思?
这不是那么简单。
现在在函数中--与传递的变量一起工作。
正如数学告诉我们的那样--如果你通过地址传递一个伪变量--其中所有的奇迹都会消失。
但如果地址池是用常数排成的--一切都会不同。
0变成1,反之亦然。
;)
为什么在EA/指标/脚本中需要如此复杂的东西,比如按地址传递变量?你说的术语是什么意思:伪变量、地址池和恒定对齐?
编译器和解释器是相似的。
所以,请想一想。
如何将参数(变量)传递给函数,如果将表达式传递给函数...
;)
我也有疑虑。
我不假装是一个超级专业人员,我没有达到专业人员的水平--没有人读消息......这是很清楚的马眼。
但我写的代码越多(到目前为止不多)--就会出现一个问题。
函数中的参数是如何传递的?
(按名称还是按价值?)
我有一个怀疑,字符串变量在传递的时候会出现抖动...
;)
虽然我不认为自己是专家或超级专家,但我会试着回答:)。
MT是用C2C++实现的,开发人员建议在有任何不确定的情况下参考该语言的标准。
根据C2C++标准,除数组外的所有参数都是以值传递的,包括表达式。也就是说,参数的副本被传递:在一个被调用的函数 内改变一个以值传递的参数,不会导致外部调用函数中的参数被改变。如果需要改变,必须通过引用(通过地址)来传递,即传递作为参数传递的变量所在的地址。那么位于这个地址的值可以被改变,地址不能被改变。所有的数组都是通过引用传递的,也就是说,地址是立即传递的:否则,大量的数据将不得不在堆栈中复制。
为了防止通过引用传递的参数在被调用的函数中被改变,C/C++使用const 修饰符。
在C2C++中,字符串是字符数组,但有一点不同:这样的数组必须以字符串终止符'\0'结束。
在MCL中,字符串是一个包含字符串大小和指针的结构(即字符串数组本身),如果这些例子是可信的。
这个例子是针对C2C++的。
这里char *是一个指向字符类型(char类型)变量的指针。指针类型本身(char*, int*, double*.......)总是一个整数--它是一个单元地址。这意味着该变量不是存储一个字符串,而是一个单元格地址。字符本身的值可以像这样被检索。*字符串或字符串[0]。为了工作,我们应该总是为一个数组分配内存,除非它是静态排列的,即它的大小没有在描述中指定,如
char string[1025] ;
是一个字符数组,有1025个元素....。如果最后一个字符(string[1024]='\0'),数组可以被视为一个1024个字符的字符串。
字符串元素可以作为通常的数组string[i]的元素被接收。当动态放置时,一个字符串被分配+1个元素,字符串结尾的最后一个字符是......
因此,字符串总是通过引用来传递。是否禁止修改它取决于ICL的实现,可以用例子来检查:把一个字符串传给函数,在那里改变值,并在被调用的函数结束后读取它(这个值)。
好运。
因此,字符串总是通过引用来传递。它们是否可以被修改取决于MCL的实现,可以用一个例子来检查:把一个字符串传给一个函数,在那里改变数值,并在被调用的函数结束后读取它(这个数值)。
哦,胡说八道。这一定是开发人员的问题,或者DLL中的一切都不对。我不是一个C++程序员--曾经试着做了几个程序,但我遇到过,当你安装了C++外壳时,一切都能正常工作。但是当你把可执行文件转移到另一台电脑上时,你会立即注意到缺少一些dll-cycle。我也不喜欢和弦子一起工作。我放弃了那门语言,而选择了Delphi。也许你可以尝试在上面制作你的dll--这样的dll在终端是很正常的...
P.S.
因此,我不明白为什么每个人都如此赞扬C++,如果甚至在选择外壳进行编程的层面上,这种语言都会出现问题......
问题是,如果你在图表上手动加载这些库和脚本,它们都能正常工作。如果你从当前进程中以编程方式将它们加载到图表上,它们也可以工作。
当你从一个远程进程加载它们时,问题就发生了。
=====================================
关于将代码转移到另一台电脑上。最有可能的是你正在迁移一个调试器版本。它从Studio中提取调试库。你应该已经编译好了版本。那么所有的东西都会在各地发挥作用。
我错了,我叫它类比。
对。我甚至对这个主题的标题条款眨了眨眼--我没有注意到名字是不同的--我的注意力已经被调到一个特定的模式。