İzleme görevi (fonksiyon grafiği oluşturma) - sayfa 4

 
Bu şablonu kullandım:
 /*
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);
  }
*/
//+------------------------------------------------------------------+
 
tara :
Bu şablonu kullandım:

o kadar küçük değil.
 
sergeev :

Ayrıca kodda iki blok görüyorum - başında ve sonunda ... ama bir taneye ihtiyacım var.

Hangi sonunda - izleme ile ilgisi yok. Silebilirsin.
 
tara :
Hangi sonunda - izleme ile ilgisi yok. Silebilirsin.

Evet. Anlıyorum. ama yine de ... hataları değil, işleve her girdiyi düşünüyoruz.
 
sergeev :

Evet. Anlıyorum. ama yine de ... hataları değil, işleve her girdiyi düşünüyoruz.

Hatalar da atılabilir.

 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 ;
  }
 
... İzleme yapmak için doğru Mql dili mi?!!
 
tara :

Hatalar da atılabilir.

:))

görev (ilk gönderiyi okursanız), kaynak kodun her işlevine yalnızca bir yardımcı işlev eklemektir - "{" işaretinden hemen sonra.

Ancak kaynak kodun tüm geçişlerini alacak ve bir çağrı ağacı oluşturacak şekilde.

Aynı zamanda, ne orijinal fonksiyonların giriş parametreleri, ne sonuçları, ne de içindeki kod


jartmailru :
... İzleme yapmak için doğru Mql dili mi?!!

Temiz bir izden bahsetmiyoruz. Ama sadece bir fonksiyon grafiği oluşturmakla ilgili.
 
sergeev :
Temiz bir izden bahsetmiyoruz. Ama sadece bir fonksiyon grafiği oluşturmakla ilgili.
Statik kod analizi ... Yürütme gerekmez.
Kod işlevlere (bloklara) ayrılır - daha sonra kimin kimi aradığı analiz edilir.
 
jartmailru :
... İzleme yapmak için doğru Mql dili mi?!!

İstersen neden olmasın.

 
sergeev :

:))

görev (ilk gönderiyi okursanız), kaynak kodun her işlevine yalnızca bir yardımcı işlev eklemektir - "{" işaretinden hemen sonra.

Ancak kaynak kodun tüm geçişlerini alacak ve bir çağrı ağacı oluşturacak şekilde.

Bu sorun çözülmez değil mi? Aritmetik () [] ve operatör {} parantez çiftlerini ortadan kaldırmak ve bunları tek bir açma paranteziyle değiştirmek mümkün olacaktır. Güçsüz?

;)