Скачать MetaTrader 5

Помогите с проблемой wininet.dll - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktor Zhelnov
1186
Viktor Zhelnov 2010.04.21 14:24  
Да сервер дает информацию, тем более перепробовал много адресов. Проблема в том что при любом запросе (не только даты изменения), функция всегда возвращает 0.
Dmitry Fedoseev
43473
Dmitry Fedoseev 2010.04.21 14:31  
pretorian писал(а) >>
А можешь еще пожалуйста привести фрагмент кода с определением CONTENT LENGTH.
...
...
...                   
hHttpOpenRequest=HttpOpenRequestA(hInternetConnect,aMethod,aObjName,"","",0,INTERNET_FLAG_RELOAD,0);
                        if(hHttpOpenRequest!=0){
                              int Bu[256];
                              int Bul[]={1024};
                              int B2[]={0};
                              int r=HttpQueryInfoA(hHttpOpenRequest,22,Bu,Bul,B2);
Viktor Zhelnov
1186
Viktor Zhelnov 2010.04.21 15:01  
О, спасибо. Вроде работает, но теперь дату изменения возвращает такой строкой  
WdAr2 25:121 Mdr 511M
Может я не так извлекаю ее из буфера?
int BufLen[]={1024};
  int ind[]={0};
  int buf0[256];
  string s="";
  int NewModified=0;
  int iRes;
  iRes=HttpQueryInfoW(hURL,HTTP_QUERY_LAST_MODIFIED,buf0,BufLen,ind);
  if(iRes<=0)
  {
    Print("Ошибка при вызове HttpQueryInfoA()");
    Inf="Ошибка получения информации о файле";
    Info(Inf);
  }
  else
  {
    s="";
    for(int k = 0; k < 1024; k++)
    {
      s=s+CharToStr(buf0[k]);
    }
  }
  Print(s);
Dmitry Fedoseev
43473
Dmitry Fedoseev 2010.04.22 02:43  
pretorian писал(а) >>
О, спасибо. Вроде работает, но теперь дату изменения возвращает такой строкой Может я не так извлекаю ее из буфера?

s="";
for(int k = 0; k < 256; k++)
{
s=s+CharToStr(buf0[k]);
}
}
Print(s);


В одном инте четыре буквы.

Игорь
4
Игорь 2013.02.05 19:07  
Integer:

Здравствуйте. Объясните пожалуйста почему в функцию HttpQueryInfo в качестве параметра lpdwBufferLength и lpdwIndex передали указатель не целое int значение, а буфер ведь в MSDN ничего такого не сказано, хотя только таким образом функция возвращает TRUE? Конечно все работает прекрасно но пришлось очень много танцевать с бубном, да и гугл толком не дал ответа. Во всех примерах передается int буфер[] , int ЕгоДлина, int Указатель но тогда возвращается FALSE и GetLastError()=0. Хочу просто разобраться что к чему, где копать.
Комбинатор
16011
Комбинатор 2013.02.05 19:15  
Потому что туда надо передавать указатель. А указатель можно получить только через массив.
Игорь
4
Игорь 2013.02.06 15:27  
TheXpert:
... указатель можно получить только через массив.

Вот тут поподробнее или где можно почитать. Из MSDN:

lpdwIndex [in, out]

Pointer to a zero-based header index used to enumerate multiple headers with the same name. When calling the function, this parameter is the index of the specified header to return. When the function returns, this parameter is the index of the next header. If the next index cannot be found, ERROR_HTTP_HEADER_NOT_FOUND is returned.

lpdwIndex

Длинный указатель, базирующийся нулевой индекс заголовка использованный, чтобы перечислять многочисленные заголовки с тем же именем. При разговоре функции, этот параметр является индексом определенного заголовка, чтобы возвращаться. Когда функция возвращается, этот параметр является индексом следующего заголовка. Если следующий индекс не может быть обнаружен, ERROR_HTTP_HEADER_NOT_FOUND возвращан.

Как я понял что про массив ни слова.

Dmitry Fedoseev
43473
Dmitry Fedoseev 2013.02.06 16:53  

А спросите в MSDN, почему там про это не написано.

Работает? Работает! Что еще надо? 

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