Скачать MetaTrader 5

Подскажите пожалуйста. API, не работает кусок кода - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Likho
2883
Sergey Likho  
а если необходимо скачивать с FTP, как тогда быть? При скачивание тоже создается файл 0 кб.
Stas Grubnik
116
Stas Grubnik  
serler2:
а если необходимо скачивать с FTP, как тогда быть? При скачивание тоже создается файл 0 кб.

ниже приведу пример: Скрипт делает следующее:

существует на ФТП файл с заведомо известным именем - FileName="123.cvs", запускаем скрипт - в папке с терминалом ...\experts\files\123.cvs находим скопированный файл.

Надеюсь что поможет.

#property show_inputs  //инструкция, которая определяеи, что перед запуском нужно спросить параметры
extern string FileName="123.cvs";
extern string login="kaats";
extern string passwd="xxxxxx";
extern string url="10.1.0.11";


#import "wininet.dll"
  int  InternetOpenA(string sAgent, int lAccessType, string sProxyName = "", string sProxyBypass = "", int lFlags = 0);
  bool FtpGetFileA(int hSession, string FileNameServer, string FileNameLocal, bool Boolean, int dwFlagsAndAttributes=0, int dwFlags=1, int dwContext= 0);
  int  InternetConnectA( int hInternetSession, string FTPURL, int port, string login, string password, int FTPflag, int lFlags = 0, int lFlags = 0);
  int  InternetCloseHandle(int hInet); 
  bool FtpPutFileA(int hSession, string FileNameServer, string FileNameLocal, int dwFlags, int dwContext);
  bool FtpDeleteFileA(int hSession, string FileNameServer);
  bool FtpRenameFileA(int hSession, string FileNameOldServer, string FileNameNewServer);
#import


int start()
{
    if(!IsDllsAllowed())
     {
       Alert("Необходимо в настройках разрешить использование DLL");
       return(0);
     }



    string patchTerminal=TerminalPath();
    patchTerminal=patchTerminal+"\\experts\\files\\"+FileName;
    Print("patchTerminal=",patchTerminal);


      int hInternetSession = InternetOpenA("my_ftp", 0, "", "", 0);
      if(hInternetSession <= 0) {  Alert("Ошибка при вызове InternetOpenA()");  return(0);}
      int hI = InternetConnectA(hInternetSession, url, 21, login, passwd,1,0,0 );
      if(hI <= 0) { Alert("Ошибка при вызове InternetConnectA()"); return(0);}                    
      
      string patch=FileName;
      //Print("patchOld->",patchOld, " patchNew->",patchNew);
      bool hFTP = FtpGetFileA( hI, patch, patchTerminal, false, 0,1,0);
      if(hFTP ==false) { Alert("Ошибка при вызове FtpGetFileA(), возможно нет файла!!!!");  return(0); }
      InternetCloseHandle(hI);
      InternetCloseHandle(hInternetSession);


 
  return(0);
}
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий