这段清除历史记录代码为什么出错?

                            
这段据说是书上的原码,第一次执行它时,没有什么错误,但连续第二次执行时,它就会死循环了。我看不懂这段代码,我估计是已经全清空了,所以目标为空,而只遇到   
  dwLastError   =   ERROR_NO_MORE_ITEMS时退出,好像错误信息不准确吧?谁能帮帮我呢  
  procedure   DelHistory;  
  var  
      lpEntryInfo:   PInternetCacheEntryInfo;  
      hCacheDir:   LongWord   ;  
      dwEntrySize,   dwLastError:   LongWord;  
  begin  
        dwEntrySize   :=   0;  
        FindFirstUrlCacheEntry(nil,   TInternetCacheEntryInfo(nil^),   dwEntrySize);  
        GetMem(lpEntryInfo,   dwEntrySize);  
   
        hCacheDir   :=   FindFirstUrlCacheEntry(nil,   lpEntryInfo^,   dwEntrySize);  
        if   hCacheDir   <>   0   then  
              DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);  
        FreeMem(lpEntryInfo);  
   
        repeat  
            dwEntrySize   :=   0;  
            FindNextUrlCacheEntry(hCacheDir,   TInternetCacheEntryInfo(nil^),  
                dwEntrySize);  
            dwLastError   :=   GetLastError();  
            if   dwLastError   =   ERROR_INSUFFICIENT_BUFFER   then   //如果成功  
            begin  
                    GetMem(lpEntryInfo,   dwEntrySize);   {分配dwEntrySize字节的内存}  
                    if   FindNextUrlCacheEntry(hCacheDir,   lpEntryInfo^,   dwEntrySize)   then  
                          DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);  
                    FreeMem(lpEntryInfo);  
            end;  
      until   (dwLastError   =   ERROR_NO_MORE_ITEMS);  
  end;

查看回复