Библиотека удаленных вызовов

 

Перепост с CLUSTERDELTA

(Заинтересован чисто как юзер этих индикаторов)

Уважаемые господа программисты,
в индикаторах КД я использую следующий кусок кода:
импорт из wininet.dll

Код: 

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, string sBuffer, int lNumBytesToRead, int& lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
int InternetConnectA(int handle, string host, int port, string user, string pass, int service, int flags, int context);
bool HttpSendRequestA(int handle, string headers, int headersLen, int& optional[], int optionalLen);
#import

//////// CODE

bool HttpGET(string strUrl, string& strWebPage)
{
  int hSession = InternetOpenA(AGENT, 0, "", "", 0);
  //string surl="";
  //surl = strUrl;
  int hReq = InternetOpenUrlA(hSession, strUrl, "", 0,

        INTERNET_FLAG_NO_CACHE_WRITE |
        INTERNET_FLAG_PRAGMA_NOCACHE |
        INTERNET_FLAG_RELOAD, 0);

  if (hReq == 0) {
    return(false);
  }

  int     lReturn[]  = {1};
  string  sBuffer    = "";

  while (TRUE) {
    if (InternetReadFile(hReq, sBuffer, BUFSIZ, lReturn) <= 0 || lReturn[0] == 0) {
      break;
    }
    strWebPage = StringConcatenate(strWebPage, StringSubstr(sBuffer, 0, lReturn[0]));
  }

  InternetCloseHandle(hReq);
  InternetCloseHandle(hSession);

  return (true);
}
Так как индикаторы работают в одном потоке с терминалом, в процессе получения данных, терминал, мягко говоря, подтормаживает.
Есть ли у вас наработки или можете ли Вы создать библиотеку, которая в процессе получения данных не будет держать основной поток и (естественно, чтобы это работало в индикаторе, а не в советнике).
 
Эту проблему с тормозами, вообще, реально решить?
 
Реально, через советник , или скрипт.
 
Rorschach:

Перепост с CLUSTERDELTA

Так как индикаторы работают в одном потоке с терминалом, в процессе получения данных, терминал, мягко говоря, подтормаживает.

Есть ли у вас наработки или можете ли Вы создать библиотеку, которая в процессе получения данных не будет держать основной поток и (естественно, чтобы это работало в индикаторе, а не в советнике).

 

Можно, конечно.
 
FAQ:
Реально, через советник , или скрипт.


А через индикатор совсем никак не получится, через длл например? 
 
Rorschach:


А через индикатор совсем никак не получится, через длл например? 

  А зачем такие сложности ? вызывайте скрипт из индикатора, он закачает нужную инфу в файл, просигналит индюку что все готово и выйдет.
Причина обращения: