delphi有人是這樣解決的,//XXX begin 2012-11-16 15:24:41 處理beforepost事件
type
TEventHandlers = class { 建一個虛擬類}
procedure aOnBeforePost(const HTTPReqResp:THTTPReqResp;Data : Pointer);
end;
//XXX end 2012-11-16 15:24:43
//XXX begin 2012-11-16 15:36:06 處理“試圖參考不存在的令牌”問題
procedure TEventHandlers.aOnBeforePost(const HTTPReqResp:THTTPReqResp;Data : Pointer);
var
iTimeOut : Integer;
begin
iTimeOut := 3600000;
InternetSetOption(Data,
INTERNET_OPTION_RECEIVE_TIMEOUT,
Pointer(@iTimeOut),
SizeOf(iTimeOut));
end;
//XXX end 2012-11-16 15:36:09
//然后在需要時替換事件,以下是替換代碼
RIO := THTTPRIO.Create(nil);
//XXX begin 2012-11-16 15:42:41 替換原來的BeforePost事件
RIO.HTTPWebNode.OnBeforePost := EvHandler.aOnBeforePost;
//XXX end 2012-11-16 15:42:44
我在bcb中這樣改
void aOnBeforePost(THTTPReqResp HTTPReqResp, Pointer Data)
{
int iTimeOut;
iTimeOut = 30000;
InternetSetOption(Data,INTERNET_OPTION_RECEIVE_TIMEOUT,Pointer(&iTimeOut),sizeof(iTimeOut));
}
rio->HTTPWebNode->OnBeforePost = aOnBeforePost;
提示
[BCC32 Error] EsbBusService.cpp(45): E2034 Cannot convert 'void (*)(THTTPReqResp,void *)' to 'TBeforePostEvent'
uj5u.com熱心網友回復:
沒有人回復,事情有點急!uj5u.com熱心網友回復:
有沒有人用過,現在老是超時。有什么別的解決方法。uj5u.com熱心網友回復:
你的數型別不對,因為電腦上面沒有環境,無法幫你除錯,只有告訴你,你自己修改試試。
1. 確保這個函式的定義和TBeforePostEvent 的定義完全一樣。
void aOnBeforePost(THTTPReqResp HTTPReqResp, Pointer Data)
2. 看看這個OnBeforePost屬性的定義是只讀的還是可寫的,如果是只讀的就沒有辦法,重新實作吧,如果是可寫的,則
3. 賦值的時候進行強制轉換,C++要求比較嚴謹。
rio->HTTPWebNode->OnBeforePost = (TBeforePostEvent *)aOnBeforePost;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132745.html
標籤:網絡及通訊開發
上一篇:有木有NIT的考試模擬系統
下一篇:關于delete的一點疑問
