報錯提示:
Access violation at address 004946AD in module 'test.exe'.Read of address 00000000.我的程式的運行原理:
本公司內網有一個網站記錄當前用戶的在線情況,而進入此網頁必然會彈一個像NT登錄一樣的登錄框要求輸入帳號密碼。
為了要把這個頁面的記錄保存入數據庫,所以我就用一個Webrowser 兩個timer 一個adoconnecs 一個adoquery來完成這個東西,工作流程就是首先用Webrowser打開需要打的網站,然後第一個timer刷新網站,第二個timer隔五秒後把HTML寫入sql.開始運行時沒有報錯,但是運行時間長了就會報上邊的錯!!!到底是什麼問題引起的呢?請高手HELP ME ~~~~~~代碼如下:
function HtmlAlltoHtml(HtmlAll:string) : string;
//var
//str : string;
begin
        result:=Copy(HtmlAll,pos('<TR bgColor=#ffff99>',HtmlAll),pos('</TBODY></TABLE></DIV>',HtmlAll)-pos('<TR bgColor=#ffff99>',HtmlAll));
end;function readini(const optini,keyini: string): string;
var
  inifile: string;
  myini:Tinifile;
begin
  inifile:= Extractfilepath(paramstr(0))+'system.ini';
  try
  myini:=Tinifile.Create(inifile);
  result:=myini.ReadString(optini,keyini,'no');
  finally
  myini.Free;
  end;
end;procedure TMainFrom.butOpenClick(Sender: TObject);
begin
        wb.Navigate('http://'+readini('SYSTEM','MaximoServer')+'/tset.Socket');
        butstar.Enabled:=true;
end;procedure TMainFrom.butStarClick(Sender: TObject);
begin
wb.Hide;
butstar.Enabled:=false;
butend.Enabled:=true;
timewb.Enabled:=true;
end;procedure TMainFrom.timeWBTimer(Sender: TObject);
begin
timeouthtml.Enabled:=true;
timewb.Enabled:=false;
wb.Refresh;
end;procedure TMainFrom.timeOutHtmlTimer(Sender: TObject);
var strHtml,strSQL : string ;
begin
timeouthtml.Enabled:=false;
timewb.Enabled:=true;
strHtml:=IHtmlDocument2(wb.Document).Body.outerHTML;
strHtml:='<TABLE>'+HtmlAlltoHtml(strHtml)+'</TABLE>'  ;
//showmessage(strHtml);
strSQL:='insert into UserActiveLog_ual (ual_cUserName,Ual_dActiveDt) values ('''+strHtml+''',getDate())';
adoq.Close;
adoq.SQL.Clear;
adoq.SQL.Add(strSQL);
adoq.ExecSQL;
end;procedure TMainFrom.butEndClick(Sender: TObject);
begin
wb.Show;
butstar.Enabled:=true;
butend.Enabled:=false;
timewb.Enabled:=false;
end;procedure TMainFrom.FormCreate(Sender: TObject);
begin
butend.Enabled:=false;
butstar.Enabled:=false;
timeWB.Interval:=strtoint(readini('SYSTEM','ReWebTime'));
conn.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;Password='+readini('SYSTEM','DBuser2')+';User ID='+readini('SYSTEM','DBuser1')+';Initial Catalog='+readini('SYSTEM','DB')+';Data Source='+readini('SYSTEM','DBSERVER')+'';
conn.LoginPrompt := false;
try
   conn.Connected:=true;
   conn.Connected:=false;
except
   Showmessage('Err:DataBaserConnected');
   butopen.Enabled:=false;
   mainfrom.Close;
end;end;procedure TMainFrom.butCloseClick(Sender: TObject);
begin
mainfrom.Close;
end;