追踪任务(构建一个函数图)。 - 页 4 123456789 新评论 Алексей Тарабанов 2011.01.22 23:26 #31 我使用了一个这样的模板。 /* extern bool TraceIsAllowed; // Показывать трассировку? //+------------------------------------------------------------------+ //| XXX //+------------------------------------------------------------------+ void XXX(string MasterName, string ProgramTrace, string Parameter) { string SlaveName="XXX"; // Имя функции. ProgramTrace=ProgramTrace+"=>"+SlaveName; // Путь обращения к функции. if( Parameter!="" ) ProgramTrace=ProgramTrace+"("+Parameter+")"; string Message=ProgramTrace; // Функциональные сообщения. LastErrorCode=GetLastError(); if( LastErrorCode>0 ) { // Ошибка или некорректные параметры. Message=Message+" ERROR "+LastErrorCode+" at Start"; Message=Message+""; // Значения параметров. Print(Message); return; // Функцию не выполнять. } if( TraceIsAllowed ) Print(Message); // Задана трассировка программы . //---- //---- LastErrorCode=GetLastError(); if( LastErrorCode>0 ) Message=Message+" ERROR "+LastErrorCode; if( Message!=ProgramTrace ) { // Были функциональные сообщения. Message=Message+" "; // Функция выполнена. Print(Message); // Печать функциональных сообщений. } return; } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { string SlaveName="Init"; // Имя функции. string ProgramTrace=SlaveName; // Путь обращения к функции. string Message=ProgramTrace; // Функциональные сообщения. LastErrorCode=GetLastError(); if( LastErrorCode>0 ) { // Ошибка или некорректные параметры. Message=Message+" ERROR "+LastErrorCode+" at Start"; Print(Message); return(0); // Функцию не выполнять. } if( TraceIsAllowed ) Print(Message); // Задана трассировка программы . //---- //---- LastErrorCode=GetLastError(); if( LastErrorCode>0 ) Message=Message+" ERROR "+LastErrorCode; if( Message!=ProgramTrace ) { // Были функциональные сообщения. Message=Message+" "; // Функция выполнена. Print(Message); // Печать функциональных сообщений. } return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { string SlaveName="Start"; // Имя функции. string ProgramTrace=SlaveName; // Путь обращения к функции. string Message=ProgramTrace; // Функциональные сообщения. LastErrorCode=GetLastError(); if( LastErrorCode>0 ) { // Ошибка или некорректные параметры. Message=Message+" ERROR "+LastErrorCode+" at Start"; Print(Message); return(0); // Функцию не выполнять. } if( TraceIsAllowed ) Print(Message); // Задана трассировка программы . //---- //---- LastErrorCode=GetLastError(); if( LastErrorCode>0 ) Message=Message+" ERROR "+LastErrorCode; if( Message!=ProgramTrace ) { // Были функциональные сообщения. Message=Message+" "; // Функция выполнена. Print(Message); // Печать функциональных сообщений. } return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { string SlaveName="DeInit"; // Имя функции. string ProgramTrace=SlaveName; // Путь обращения к функции. string Message=ProgramTrace; // Функциональные сообщения. LastErrorCode=GetLastError(); if( LastErrorCode>0 ) { // Ошибка или некорректные параметры. Message=Message+" ERROR "+LastErrorCode+" at Start"; Print(Message); return(0); // Функцию не выполнять. } if( TraceIsAllowed ) Print(Message); // Задана трассировка программы . //---- //---- LastErrorCode=GetLastError(); if( LastErrorCode>0 ) Message=Message+" ERROR "+LastErrorCode; if( Message!=ProgramTrace ) { // Были функциональные сообщения. Message=Message+" "; // Функция выполнена. Print(Message); // Печать функциональных сообщений. } return(0); } */ //+------------------------------------------------------------------+ --- 2011.01.22 23:34 #32 tara: 我使用了一个这样的模板。 这有点不同。 Алексей Тарабанов 2011.01.22 23:35 #33 sergeev: 我在代码中也看到了两个块,一个在开头,一个在结尾......但我需要一个。 最后的那个与追踪没有关系。你可以删除它。 --- 2011.01.22 23:36 #34 tara: 最后的那个与追踪无关。你可以删除它。 是的,我明白了,但还是...我们不看错误,我们看的是函数的每个输入。 Алексей Тарабанов 2011.01.22 23:38 #35 sergeev: 是的,我看得出来,但还是...我们不看错误,我们看的是函数的每个输入。 错误也可以被抛出。 extern bool TraceIsAllowed; // Показывать трассировку? //+------------------------------------------------------------------+ //| XXX //+------------------------------------------------------------------+ void XXX(string MasterName, string ProgramTrace, string Parameter) { string SlaveName="XXX"; // Имя функции. ProgramTrace=ProgramTrace+"=>"+SlaveName; // Путь обращения к функции. if( Parameter!="" ) ProgramTrace=ProgramTrace+"("+Parameter+")"; string Message=ProgramTrace; // Функциональные сообщения. if( TraceIsAllowed ) Print(Message); // Задана трассировка программы . //---- //---- return; } Андрей 2011.01.22 23:40 #36 ...Mql是用来做追踪的正确语言吗!!? --- 2011.01.22 23:40 #37 tara: 错误也可以被抛出。 :)) 任务(如果你读了第一篇帖子)归结为在源代码中的每个函数中添加一个服务函数--就在"{"后面。 但以这样的方式来获取源代码的所有段落并建立一个调用树。 它不会以任何方式改变源函数的输入参数,也不会改变结果或内部代码。 jartmailru: ...Mql是用来做追踪的正确语言吗!!? 这与纯粹的痕迹无关。这只是关于构建一个函数图。 Андрей 2011.01.22 23:48 #38 sergeev: 这与纯粹的痕迹无关。只是关于建立函数图。 静态代码分析...执行是不需要的。 代码被分解成功能(块),然后分析谁调用谁。 Алексей Тарабанов 2011.01.22 23:50 #39 jartmailru: ...Mql是用来做追踪的正确语言吗!!? 为什么不呢,如果你想的话。 Vladimir Gomonov 2011.01.22 23:51 #40 sergeev: :)) 问题(如果你读了第一篇帖子)归结为在源代码中的每个函数中只 添加一个 服务函数--就在"{"后面。 但以这样的方式获得所有源代码的通行证,并建立调用树。 难道这不是很明显的,这个 任务是无法解决的吗?这样我们就可以消除成对的算术()[] 和运算符{} 括号,用一个单一的开口括号来代替它们。那会不会太糟糕了? ;) 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我使用了一个这样的模板。
这有点不同。
我在代码中也看到了两个块,一个在开头,一个在结尾......但我需要一个。
最后的那个与追踪无关。你可以删除它。
是的,我明白了,但还是...我们不看错误,我们看的是函数的每个输入。
是的,我看得出来,但还是...我们不看错误,我们看的是函数的每个输入。
错误也可以被抛出。
错误也可以被抛出。
:))
任务(如果你读了第一篇帖子)归结为在源代码中的每个函数中添加一个服务函数--就在"{"后面。
但以这样的方式来获取源代码的所有段落并建立一个调用树。
它不会以任何方式改变源函数的输入参数,也不会改变结果或内部代码。
...Mql是用来做追踪的正确语言吗!!?
这与纯粹的痕迹无关。这只是关于构建一个函数图。
这与纯粹的痕迹无关。只是关于建立函数图。
代码被分解成功能(块),然后分析谁调用谁。
...Mql是用来做追踪的正确语言吗!!?
为什么不呢,如果你想的话。
:))
问题(如果你读了第一篇帖子)归结为在源代码中的每个函数中只 添加一个 服务函数--就在"{"后面。
但以这样的方式获得所有源代码的通行证,并建立调用树。
难道这不是很明显的,这个 任务是无法解决的吗?这样我们就可以消除成对的算术()[] 和运算符{} 括号,用一个单一的开口括号来代替它们。那会不会太糟糕了?
;)