|
안녕하세요 만해입니다.
크크 요즘 이전에 만들었던 웹 로봇을 다시 손을 데고 있는데요
이상하게 자꾸 에러가 나서 여쭤 봅니다
이 부분은 자료 입력 부분이고요
typedef struct _TObjectTagList
{
unsigned short TagType;
unsigned long Size;
bool IsCon;
unsigned int Count;
unsigned int Status;
char* Type;
unsigned int Depth;
}TObjectTagList;
map<string,TObjectTagList*,less<string> > AnchorsMap;
//--------------------------------------------------------------
string url;
url = Url.c_str();
map<string,TObjectTagList*,less<string> >::iterator i;
i = AnchorsMap.find(url);
if ( i != AnchorsMap.end() )
i->second->Count = i->second->Count+1;
else
{
TObjectTagList *ObjList = new TObjectTagList;
ObjList->TagType = AnchorTag;
ObjList->IsCon = false;
ObjList->Count = 1;
ObjList->Size = 0;
ObjList->Status = 0;
ObjList->Type = NULL;
AnchorsMap[url] = ObjList;
}
여기서 AnchorsMap에 url 과 그 부과적인 자료를 Map에 집어 넣는데요
그 이후에 밑의 루틴에서 url과 그 부과적인 자료를 받아야 하는데
map<string,TObjectTagList*,less<string> >::iterator MapItr;
for ( MapItr = HParser->AnchorsMap.begin() ;
MapItr != HParser->AnchorsMap.end() ; ++MapItr )
{
AnsiString Url = MapItr->first.c_str();
TObjectTagList * tmp = MapItr->second;
if ( UrlMap.find(MapItr->first) == UrlMap.end() )
UrlMap[MapItr->first] = MapItr->second;
else
{
// A
if ( UrlMap.count(MapItr->first) >= UrlMap.size() )
UrlMap[MapItr->first] = tmp;
else
UrlMap[MapItr->first]->Count++;
}
}
A로 주석된 부분 그러니깐 UrlMap에 MapItr->first 값이 있으면
UrlMap[MapItl->first]에 있는 Count 라는 변수의 값을 증가 할려고 하는데
이게 한번씩 쓰레기 값이 검출되어서 에러가 나네요
그리고 자료 입력하는 부분은 THtmlParser 라는 TThread를 상속해서 만들어진
쓰레드 유닛이고요
그 자료를 받아 내는 부분은
그 쓰레드 유닛을 호출한 부분입니다.
그럼 이만
|