错误、漏洞、问题 - 页 650 1...643644645646647648649650651652653654655656657...3184 新评论 Anatoli Kazharski 2012.02.22 07:55 #6491 Rosh:写信给服务台,说明所有细节(必要时附上专家)。这将会更快。 好的。我今天肯定会这样做。但为了总体发展,我还是要问你几个问题。:)mql5: 你可能正在使用大尺寸的局部函数变量,例如数组。 在下一次构建中,对于32位终端,你可以用相应的编译器属性#property stacksize 来控制堆栈大小。 这是否是一个只有32位终端的问题?我有x64。如何理解"......局部函数变量的大尺寸,例如数组......"?"它应该有多大才能使堆栈最后被溢出? Ilyas 2012.02.22 08:10 #6492 tol64: 这是否只是32位终端的问题?我有x64。如何理解"......大尺寸的局部 函数变量,比如说数组...... "呢?"? 多大的堆栈才会最终溢出来? 不,这不仅仅是一个32位终端的问题。但32位终端的解决方案目前已经准备就绪,而在64位终端中,它仍然受到256Kb堆栈限制的影响。 但如果程序员没有使用属性手动指定所需的堆栈大小,终端中的EX5将以默认的堆栈大小(256Kb)工作。 关于大尺寸。 函数内部的每个变量声明(静态变量除外)都会在堆栈上分配空间,而为局部变量分配堆栈空间则发生在每次调用时。 因此,如果一个函数有64Kb的局部变量,堆栈空间足够3次调用,堆栈溢出发生在4次调用时(因为堆栈的一部分被用于终端的内部需要)。因此,如果需要大量的本地数据,最好使用动态内存--当你进入函数时,本地需要的内存在系统中被分配(new, ArrayResize),当你退出函数时,内存被删除(delete, ArrayFree)。 Fia 2012.02.22 10:05 #6493 你好!我无法理解这个问题。 filehandle=FileOpen("My\\Symbols.txt",FILE_READ|FILE_TXT|FILE_ANSI);它在调试中运行良好,文件在MT5/MQL5/File/中可读。当在测试器中运行时,它显示 "Symbols.txt文件无法打开,错误5004 "和Handel -1我也把它塞进了MT5\tester\agent000\MQL5\File文件夹,但它没有再看到它,根本就把那里的文件杀死了)。同时,描述说。 "文件在客户终端的子文件夹MQL5\files(或在测试的情况下文件夹_agent_testing/MQL5\files)中打开"。 "该函数在本地文件夹(MQL5\Files或MQL5\Tester\Files在测试的情况下)中搜索一个文件。"我没有 "MQL5\Tester\Files "文件夹,就像帮助中说的那样?我做错了什么,如何才能克服这个问题?谢谢你的答复。 Rashid Umarov 2012.02.22 10:21 #6494 试着使用#property tester_file。#property tester_file "My\\Symbols.txt" Fia 2012.02.22 11:58 #6495 Rosh: 试着使用#property tester_file。Ugh-uh-x它似乎有助于在MT5\tester\agent000\MQL5\File中再次投入,然后它与财产的 工作。谢谢你! Victor Kirillin 2012.02.22 12:05 #6496 Fia:再试了一下测试器,手柄-1,错误5004。我不知道还能是什么原因,它显然找不到文件,但在调试时可以看到一切。 将文件复制到MQL5/Tester/Files(事先创建一个文件夹)。 Документация по MQL5: Файловые операции / FolderCreate www.mql5.com Файловые операции / FolderCreate - Документация по MQL5 Fia 2012.02.22 13:21 #6497 uncleVic: 将文件复制到MQL5/Tester/Files(事先创建一个文件夹)。我试过了,手动创建了这样的文件夹,把我的文件(带子文件夹,禁用#属性tester_file),它在测试器中无论如何也找不到。而如果你连接#property tester_file,工作起来就很奇怪了。 然而,他不时地在MT5/tester/agent000/MQL5/File中崩溃一个文件夹和一个文件,可能是因为如果你禁用#property tester_file,他就会在那里破解一切。是的,我现在发现,如果我改变了mq5文件中的代码(任何地方)(txt是从该文件中调用的),然后编译并进入测试器,它会破解MT5\tester\agent000\MQL5\File中的所有内容。这是一个奇迹,但至少它是有效的--这很好。 Mykola Demko 2012.02.22 13:45 #6498 Fia:我试过了,手动创建了这样的文件夹,把我的文件(带子文件夹,禁用#属性tester_file),它在测试器中无论如何也找不到。而如果你连接#property tester_file,那么奇怪的是,它可以工作。 然而,他不时地在MT5/tester/agent000/MQL5/File中崩溃一个文件夹和一个文件,可能是因为如果你禁用#property tester_file,他就会在那里破解一切。是的,现在我发现,如果我改变了mq5文件中的代码(任何地方)(txt是从该文件中调用的),然后编译并进入测试器,它会破解MT5\tester\agent000\MQL5\File中的所有内容。这是一个奇迹,但至少它是有效的,这很好。如果是W7,把文件放在Document and Setting/.../MetaQuotes/Common/Files目录下,或者禁用UAC。PS再次检查名字拼写的正确性,名字写在什么版面上(最好是复印件),名字后面是否有空格等等。 Fia 2012.02.22 14:16 #6499 Urain:如果是W7,把文件放在Document and Setting/.../MetaQuotes/Common/Files中,或者禁用UAC。PS再次检查名字拼写的正确性,名字写在哪个版面上(最好是复制),名字后面是否有空格等等。真的,我有Win7 64bit,但UAC是零。C:\Documents and Settings\All Users\MetaQuotes\Terminal\Common\Files\我把我的文件夹和文件放在那里,没有帮助,在测试器中没有找到文件。是的,我认为所有的名字都是正确的,在#property tester_file 的测试中可以工作(在调试中也可以工作),但在测试中没有办法,只能通过#property tester_file。而且有了上面提到的改变和编译mq5后杀死文件的问题(我有这样一个布局)。 Vladimir Gomonov 2012.02.22 17:40 #6500 你的帮助中写着一个公然的谎言。CLBufferWrite 将一个数组写到OpenCL缓冲区。 CLBufferWrite( intbuffer//到OpenCL缓冲区的手柄 const void&data[]// 数组的值 uintoffset=0//从哪个元素开始,默认是从第一个元素开始。 voidsize=WHOLE_ARRAY//数值的数量, 默认为整个数组。 ); 参数......补偿 ..... 尺寸 [in] 要写入的值 的数量。默认情况下,数组的所有 值 都被写入OpenCL缓冲区。......它实际上写的是字节数(!!),根本不是数值。 我花了两个晚上来调试这个指标,直到我把它弄明白!"。为什么呢?- 因为我相信你的写作...:))//没能及时发现,因为默认的( size=WHOLE_ARRAY)工作正常。 1...643644645646647648649650651652653654655656657...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
写信给服务台,说明所有细节(必要时附上专家)。这将会更快。
你可能正在使用大尺寸的局部函数变量,例如数组。
在下一次构建中,对于32位终端,你可以用相应的编译器属性#property stacksize 来控制堆栈大小。
这是否只是32位终端的问题?我有x64。如何理解"......大尺寸的局部 函数变量,比如说数组...... "呢?"? 多大的堆栈才会最终溢出来?
但如果程序员没有使用属性手动指定所需的堆栈大小,终端中的EX5将以默认的堆栈大小(256Kb)工作。
关于大尺寸。
函数内部的每个变量声明(静态变量除外)都会在堆栈上分配空间,而为局部变量分配堆栈空间则发生在每次调用时。
因此,如果一个函数有64Kb的局部变量,堆栈空间足够3次调用,堆栈溢出发生在4次调用时(因为堆栈的一部分被用于终端的内部需要)。因此,如果需要大量的本地数据,最好使用动态内存--当你进入函数时,本地需要的内存在系统中被分配(new, ArrayResize),当你退出函数时,内存被删除(delete, ArrayFree)。
你好!
我无法理解这个问题。
filehandle=FileOpen("My\\Symbols.txt",FILE_READ|FILE_TXT|FILE_ANSI);
它在调试中运行良好,文件在MT5/MQL5/File/中可读。
当在测试器中运行时,它显示 "Symbols.txt文件无法打开,错误5004 "和Handel -1
我也把它塞进了MT5\tester\agent000\MQL5\File文件夹,但它没有再看到它,根本就把那里的文件杀死了)。
同时,描述说。
"文件在客户终端的子文件夹MQL5\files(或在测试的情况下文件夹_agent_testing/MQL5\files)中打开"。
"该函数在本地文件夹(MQL5\Files或MQL5\Tester\Files在测试的情况下)中搜索一个文件。"
我没有 "MQL5\Tester\Files "文件夹,就像帮助中说的那样?
我做错了什么,如何才能克服这个问题?
谢谢你的答复。
试着使用#property tester_file。
#property tester_file "My\\Symbols.txt"
试着使用#property tester_file。
Ugh-uh-x它似乎有助于在MT5\tester\agent000\MQL5\File中再次投入,然后它与财产的 工作。
谢谢你!
再试了一下测试器,手柄-1,错误5004。
我不知道还能是什么原因,它显然找不到文件,但在调试时可以看到一切。
将文件复制到MQL5/Tester/Files(事先创建一个文件夹)。
我试过了,手动创建了这样的文件夹,把我的文件(带子文件夹,禁用#属性tester_file),它在测试器中无论如何也找不到。
而如果你连接#property tester_file,工作起来就很奇怪了。
然而,他不时地在MT5/tester/agent000/MQL5/File中崩溃一个文件夹和一个文件,可能是因为如果你禁用#property tester_file,他就会在那里破解一切。
是的,我现在发现,如果我改变了mq5文件中的代码(任何地方)(txt是从该文件中调用的),然后编译并进入测试器,它会破解MT5\tester\agent000\MQL5\File中的所有内容。
这是一个奇迹,但至少它是有效的--这很好。
我试过了,手动创建了这样的文件夹,把我的文件(带子文件夹,禁用#属性tester_file),它在测试器中无论如何也找不到。
而如果你连接#property tester_file,那么奇怪的是,它可以工作。
然而,他不时地在MT5/tester/agent000/MQL5/File中崩溃一个文件夹和一个文件,可能是因为如果你禁用#property tester_file,他就会在那里破解一切。
是的,现在我发现,如果我改变了mq5文件中的代码(任何地方)(txt是从该文件中调用的),然后编译并进入测试器,它会破解MT5\tester\agent000\MQL5\File中的所有内容。
这是一个奇迹,但至少它是有效的,这很好。
如果是W7,把文件放在Document and Setting/.../MetaQuotes/Common/Files目录下,或者禁用UAC。
PS再次检查名字拼写的正确性,名字写在什么版面上(最好是复印件),名字后面是否有空格等等。
如果是W7,把文件放在Document and Setting/.../MetaQuotes/Common/Files中,或者禁用UAC。
PS再次检查名字拼写的正确性,名字写在哪个版面上(最好是复制),名字后面是否有空格等等。
真的,我有Win7 64bit,但UAC是零。
C:\Documents and Settings\All Users\MetaQuotes\Terminal\Common\Files\我把我的文件夹和文件放在那里,没有帮助,在测试器中没有找到文件。
是的,我认为所有的名字都是正确的,在#property tester_file 的测试中可以工作(在调试中也可以工作),但在测试中没有办法,只能通过#property tester_file。
而且有了上面提到的改变和编译mq5后杀死文件的问题(我有这样一个布局)。
你的帮助中写着一个公然的谎言。
CLBufferWrite
将一个数组写到OpenCL缓冲区。
CLBufferWrite(
intbuffer//到OpenCL缓冲区的手柄
const void&data[]// 数组的值
uintoffset=0//从哪个元素开始,默认是从第一个元素开始。
voidsize=WHOLE_ARRAY//数值的数量, 默认为整个数组。
);
参数
......补偿
.....
尺寸
[in] 要写入的值 的数量。默认情况下,数组的所有 值 都被写入OpenCL缓冲区。
......它实际上写的是字节数(!!),根本不是数值。
我花了两个晚上来调试这个指标,直到我把它弄明白!"。为什么呢?- 因为我相信你的写作...
:))
//没能及时发现,因为默认的( size=WHOLE_ARRAY)工作正常。