取得網頁原始碼再一問 |
答題得分者是:RaynorPao
|
david629
一般會員 發表:50 回覆:25 積分:15 註冊:2003-02-14 發送簡訊給我 |
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26560
上面這篇的方法是將資料寫入到佔存檔內
想請問一下,如果我將上面的方法寫在下面的事件內 void __fastcall TfrmMain::CppWebBrowserProgressChange(TObject *Sender,
long Progress, long ProgressMax)
{
if ( Progress > -1 && ProgressMax > 0 )
{
Keep Run .......
}
else
{
存入暫存檔內
} } 原因是我想當下載結束時時立刻做後續的處理
請問我要該如何做,並且可以將資料存在一個 AnsiString 內 謝謝
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26560 上面這篇的方法是將資料寫入到佔存檔內 想請問一下,如果我將上面的方法寫在下面的事件內 void __fastcall TfrmMain::CppWebBrowserProgressChange(TObject *Sender, long Progress, long ProgressMax) { if ( Progress > -1 && ProgressMax > 0 ) { Keep Run ....... } else { 存入暫存檔內 } } 原因是我想當下載結束時時立刻做後續的處理 請問我要該如何做,並且可以將資料存在一個 AnsiString 內david629 你好: 請參考以下的做法 < class="code"> CppWebBrowser1->Navigate(WideString("http://tw.yahoo.com/")); while(CppWebBrowser1->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE) { Application->ProcessMessages(); } IStream *pIStream; HGLOBAL hGlobal; IPersistStreamInit *psi; const int Size=0x100000; if(CppWebBrowser1->Document==NULL) { ShowMessage("Error"); return; } hGlobal=GlobalAlloc(GPTR, Size); if(hGlobal==0) { ShowMessage("Error"); } OleCheck(CreateStreamOnHGlobal(hGlobal, true, &pIStream)); try { OleCheck(CppWebBrowser1->Document->QueryInterface( __uuidof(IPersistStreamInit), (void**)&psi)); try { OleCheck(psi->Save(pIStream, false)); TMemoryStream *ms=new TMemoryStream; ms->SetSize(Size); CopyMemory(ms->Memory, hGlobal, Size); TStringList *sl=new TStringList; sl->LoadFromStream(ms); //sl->SaveToFile("ms1.htm"); //此行只是要驗證取得的資料是否正確 //你可以在在裡對 sl->Strings[i] 做處理 delete sl; delete ms; } __finally { psi->Release(); } } __finally { delete pIStream; } GlobalFree(hGlobal); -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
JWCS
一般會員 發表:0 回覆:2 積分:0 註冊:2005-03-06 發送簡訊給我 |
你好,我用了這個方式,但是"有時候"會出現 Access Violation ,爬了漫多文章的,卻不知道要怎麼改 @@" 我欲連續取得數個網頁的原始碼,但是每次發生 Access Violation 的地方都不一樣 @@" 以下是我程式中這個 Function 的內容,麻煩各位先進能否幫我看一下 <(_ _)> : String HTML;
//取得原始碼
bool __fastcall TForm1::getString(){
while(CppWebBrowser1->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE){
Application->ProcessMessages();
}
IStream *pIStream;
HGLOBAL hGlobal;
IPersistStreamInit *psi;
const int Size=0x100000;
if(CppWebBrowser1->Document==NULL){
ShowMessage("Error");
return false;
}
hGlobal=GlobalAlloc(GPTR, Size);
if(hGlobal==0){
ShowMessage("Error");
}
OleCheck(CreateStreamOnHGlobal(hGlobal, true, &pIStream));
try{
OleCheck(CppWebBrowser1->Document->QueryInterface(__uuidof(IPersistStreamInit), (void**)&psi));
try{
OleCheck(psi->Save(pIStream, false));
TMemoryStream *ms=new TMemoryStream;
ms->SetSize(Size);
CopyMemory(ms->Memory, hGlobal, Size);
TStringList *sl=new TStringList;
sl->LoadFromStream(ms);
//sl->SaveToFile("ms1.htm"); //此行只是要驗證取得的資料是否正確
//你可以在在裡對 sl->Strings[i] 做處理
HTML = "";
for(int i=1;i
|
Blueberrug
一般會員 發表:14 回覆:50 積分:17 註冊:2005-05-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |