Maks150988
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Собственно такой вопросик. Чето не доперло решение... Имеем Код: type FN_HTTPDOWNLOAD = function(szURL : PChar; szMethod : PChar; szArgs : PChar; szReferrer : PChar; szContentType : PChar; pBuffer : pBYTE; dwMaxBufferLen : DWORD) : BOOL; stdcall; | Этой функцией мы посылаем запрос на сервер и она возвращает полученный результат в подготовленный буфер. В плагине есть функция GetAccountState для общения с программой. Так вот выглядит она примерно так: Код: function GetAccountState(блаблабла; httpDownload : FN_HTTPDOWNLOAD) : BOOL; stdcall; begin //httpDownload является функцией обратного вызова. То есть httpDownload(TszURLGetBalance, TszMethod, PChar(Format(TszArgsData, [szAccount, szPassword])), nil, nil, @ResultBuffer, Length(ResultBuffer)); //И весь ответ сервера в ResultBuffer. Дальше парсим как хотим... end; | Собственно захотелось не громоздить код написанием собственной отправки запроса на сервер, а воспрользоваться текущей функцией httpDownload. Сделал следующее: Код: function GetStkCardBilling(hWndNum, hWndPsw, hWndBil : THandle; httpDownload : FN_HTTPDOWNLOAD) : Boolean; var szLogin : String; szPassword : String; szBilling : String; begin szLogin := Edit_GetText(hWndNum); szPassword := Edit_GetText(hWndPsw); httpDownload('http://адрес', 'POST', 'username=szLogin&password=szPassword', nil, nil, @szBuffer, Length(szBuffer)); szBilling := szBuffer; SendMessage(hWndBil, WM_SETTEXT, 0, Integer(PChar(szBilling))); Result := TRUE; end; | Функция вроде как бы работает. Но теперь интресует способ ее вызова. Сделал так, потому что хз правильно не правильно, вообщем чего-то не понятно: Код: var dwReturn : DWORD; ------------- GetStkCardBilling(GetDlgItem(hStk, ID_CARD_NUMBER), GetDlgItem(hStk, ID_CARD_PASSWD), GetDlgItem(hStk, ID_INFO_UPDATE), dwReturn); | То есть суем в функцию хэндлы полей ввода и собираем с них нужную инфу, а дальше через функцию все что нужно делаем. Но проблема с 4 параметром тут. Комплятор говорит что нужна какая-то переменная. Ну я посмотрел как колбеки делают. Ну вроде так сделал. Но походу httpDownload таким макаром ничего и не грузит, наверное даже дело до этого не доходит. От незнания перепробывал всякие варианты "в лоб". И даже FN_HTTPDOWNLOAD(dwReturn) подставил в 4 параметр... Буфер пуст. Может быть необходимо прототип функции писать в этом случае? Я без понятия... |