Gemeinsam lernen und schreiben in MQL5 - Seite 5

 
maxandsoft :

Der Punkt ist, dass, wenn ich es während der Fehlersuche kompilieren es wirft mich zurück zu den MQL-Editor, ohne sogar einen Fehler zu geben. Und wenn ich den EA einfach auf ein Diagramm ziehe, wird er nicht einmal darin angezeigt, d.h. weder das Debuggen noch das Starten des EA führt zu Fehlern


Ich habe einen Fehler gefunden, aber er besagt, dass die DLL nicht zulässig ist, d. h. ich kann sie nicht sehen. Die Frage ist, wo sie sein sollte? (in Version 4 musste er nirgends überschrieben werden, er befand sich standardmäßig im Systemordner von Windows)

 
maxandsoft   :


Aber ich habe eine Fehlermeldung gefunden, die besagt, dass die DLL nicht erlaubt ist - d.h. sie kann sie nicht sehen. Die Frage ist nur, wo soll sie angesiedelt werden? (in Version 4 musste er nirgends überschrieben werden, er befand sich standardmäßig im Systemordner von Windows)

Versuchen Sie, den Import aus einer DLL zuzulassen


 

Ich denke, der Unterschied zwischen einem guten und einem schlechten Compiler besteht darin, dass man ihn benutzen kann, um unbrauchbaren Code aus brauchbarem Code herauszufiltern. Und das ist die Hauptsache. Man stößt oft auf Dinge, die atemberaubend sind und in keinem technischen Zusammenhang stehen. Dies trägt zur Entwicklung und Verfeinerung der Ausdrucksmittel der Sprache bei. Und wenn Sie sich Gedanken darüber machen müssen, in welchem Format die Daten eingegeben werden sollen, liegt das nicht am Compiler, sondern an ... Meiner Meinung nach ist der Compiler in MQL5 nicht weniger verbesserungswürdig als die Programmoberfläche.

 
Rosh   :

Versuchen Sie, den Import aus einer DLL zuzulassen

Jetzt heißt es

2010.01.14:27:56 GetInternet (EURJPY,H1) Zugriffsverletzung gelesen auf 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

 
maxandsoft   :

Jetzt heißt es

2010.01.14:27:56 GetInternet (EURJPY,H1) Zugriffsverletzung gelesen auf 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

Bitte fügen Sie den Quellcode bei. Kann als private Nachricht gesendet werden.
 
mql5   :

Bitte fügen Sie den Quelltext bei. Kann als private Nachricht gesendet werden.

//+------------------------------------------------------------------+
//|                                                  GetInternet.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#import "wininet.dll"
  int InternetAttemptConnect (int x);
  int InternetOpenA(string sAgent, int lAccessType, 
                    string sProxyName = "", string sProxyBypass = "", 
                    int lFlags = 0);
  int InternetOpenUrlA(int hInternetSession, string sUrl, 
                       string sHeaders = "", int lHeadersLength = 0,
                       int lFlags = 0, int lContext = 0);
          
  int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, 
                       int& lNumberOfBytesRead[]);
  int InternetCloseHandle(int hInet);



#import
input int Step = 300;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("Старт...");
   

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
    Comment(GetURL("http://www.forexremote.net"));
    
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------------------------------------+
//| Функция получения WEB страницы                                                                           |
//+----------------------------------------------------------------------------------------------------------+
string GetURL(string url)
{
   int rv = InternetAttemptConnect(0);
   if(rv != 0)
     {
       Alert("Ошибка при вызове InternetAttemptConnect()");
       return("");
     }

   int hInternetSession = InternetOpenA("Microsoft Internet Explorer", 1, "", "", 0);
   if(hInternetSession <= 0)
     {
       Alert("Ошибка при вызове InternetOpenA()");
       return("");         
     }

   int hURL = InternetOpenUrlA(hInternetSession, url, "", 0, 0, 0);
   if(hURL <= 0)
    {
       Print("Ошибка получения данных с узла!");
       //fComment("Ошибка получения данных с узла!",true);
       InternetCloseHandle(hInternetSession);
       return("");         
     } 
          
   int cBuffer[256];
   int dwBytesRead[1]; 
   string TXT = "";
   while(!IsStopped())
     {
       bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
       if(dwBytesRead[0] == 0)
           break;
       string text = "";   
       for(int i = 0; i < 256; i++)
         {
              text = text + CharToString(cBuffer[i] & 0x000000FF);
              if(StringLen(text) == dwBytesRead[0])
                  break;
              text = text + CharToString(cBuffer[i] >> 8 & 0x000000FF);
              if(StringLen(text) == dwBytesRead[0])
                  break;
           text = text + CharToString(cBuffer[i] >> 16 & 0x000000FF);
           if(StringLen(text) == dwBytesRead[0])
               break;
           text = text + CharToString(cBuffer[i] >> 24 & 0x000000FF);
         }
       TXT = TXT + text;
       //Sleep(500);

     }
     InternetCloseHandle(hInternetSession);
     return(TXT);
}
//+----------------------------------------------------------------------------------------------------------+
//| Конец Функции получения WEB страницы                                                                     |
//+----------------------------------------------------------------------------------------------------------+
 
maxandsoft:
Hier steht Folgendes.

2010.01.14:27:56 GetInternet (EURJPY,H1) Zugriffsverletzung gelesen auf 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

Vielen Dank für Ihre Nachricht, der Fehler wurde behoben. Warten Sie auf ein Update.
 

äh ... Mit Build 239 ist der Fehler verschwunden, aber nicht ganz...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Fehler beim Abrufen von Daten vom Knoten!

Wie sich herausstellte, lag der Grund für Letzteres in den Funktionen, die durch Unicode ersetzt wurden

InternetOpenW() und InternetOpenUrlW()

Ich habe das Problem ein wenig* gelöst...

Nur habe ich nicht Expert Advisor verwenden, korrigiert ich Code als Skript.


*geringfügig, nur weil es so belassen wurde, um die ytf-8-Kodierung der Website zu umgehen:

<th width="50">&nbsp;PЎѕÐsбщеÐÑœЏ&nbsp;</th>

 
kombat:

äh ... Mit Build 239 ist der Fehler verschwunden, aber nicht ganz...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Fehler beim Abrufen von Daten vom Knoten!

Wie sich herausstellte, lag der Grund für Letzteres in den Funktionen, die durch Unicode ersetzt wurden

InternetOpenW() und InternetOpenUrlW()

Ich habe das Problem ein wenig* gelöst...

Nur habe ich nicht Expert Advisor verwenden, korrigiert ich Code als Skript.


*geringfügig, nur weil es so belassen wurde, um die ytf-8-Kodierung der Website zu umgehen:

<th width="50">&nbsp;ÐЎÐsбщеÐÑœЏ&nbsp;</th>

 
maxandsoft:
Warten auf das neue Gebäude