Привет. Помогите разобраться. При вызове функции HttpQueryInfoA при попытке получить дату создания файла, функция возвращает 0, такое же происходит и при запросе размера файла. Из-за чего это может быть?
- Новая версия платформы MetaTrader 5 build 2190
- Как импортировать функцию класса из dll файла?
- [АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4.
Если для буфера используется массив из 256-ти интов, его размер 1024.
Покажите как объявляете HttpQueryInfoA().
Вот объявления всех функций wininet.dll. С 1024 тоже не работает. Причем постоянно возвращает 0, пробовал GetLastError() использовать - ошибок никаких нет.
#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 HttpQueryInfoA(int hRequest,int dwInfoLevel,int &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex); int InternetCloseHandle(int hInet); #import
Попробуйте вместо
int HttpQueryInfoA(int hRequest,int dwInfoLevel,int &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
Вот так:
int HttpQueryInfoA(int hRequest,int dwInfoLevel,int &lpvBuffer[],int & lpdwBufferLength[],int &lpdwIndex);
Также, как с int InternetReadFile(...
С последним параметром lpdwIndex тоже также, если он по ссылке передается.
Так это же по сути длина буфера, как я тогда считывать с него буду? Попробовал, не помогло, все равно в ответ 0. В InternetReadFile(int hFile,int &sBuffer[],int lNumBytesToRead,int &lNumberOfBytesRead[]) тоже ведь указан буфер и размер его следом.
Оба менял, не помогает.
Вот при таком объявлении:
int HttpQueryInfoA( int hRequest, int dwInfoLevel, int & lpvBuffer[], int & lpdwBufferLength[], int & lpdwIndex[]);и вызове с флагом HTTP_QUERY_CONTENT_LENGTH, работает.
А можешь еще пожалуйста привести фрагмент кода с определением CONTENT LENGTH.
У меня при таком объявлении:
int HttpQueryInfoA(int hRequest,int dwInfoLevel,int &lpvBuffer[],int &lpdwBufferLength[],int &lpdwIndex[]);И при таком объявлении переменных:
int BufLen[1024]; int ind[0]; int buf0[256]; string s=""; int NewModified=0; int iRes; iRes=HttpQueryInfoA(hURL,HTTP_QUERY_LAST_MODIFIED,buf0,BufLen,ind); if(iRes<=0) { Print("Ошибка при вызове HttpQueryInfoA()"); Inf="Ошибка получения информации о файле"; Info(Inf); }Все равно не работает.
Впринципе, некоторые веб серверы такую информацию и не дают. Там докачки не поддерживают и т.д. Проверьте сначало сервер - вернее настройки сервера.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь