|
안녕하세요 만해 입니다.
제가 정희한 클래스의 일부 구요~
class THtmlParser
{
private:
AnsiString FTitle;
public:
AnsiString FHtml;
AnsiString FTagString;
THtmlParser();
~THtmlParser();
Div_Token();
TStringList* FText;
TStringList* FLinkes;
TStringList* FImages;
TStringList* FImg;
TStringList* FTags;
int Linkes_cnt;
bool init( void );
void Execute ( void );
void FPass(void);
void SPass(void);
void Process_Token (TStringList* Token);
void Divide_Token (AnsiString token,TStringList* Token);
};
밑의 소스는 생성자입니다.
THtmlParser::THtmlParser()
{
init();
Linkes_cnt=0;
FLinkes = new TStringList;
FImages = new TStringList;
FTags = new TStringList;
FText = new TStringList;
}
//---------------------------------------------------------------------------
/*Struct TDefTagStruct
{
char[10] TagName;
int TagLength;
ETagKind TagKind;
}*/
//---------------------------------------------------------------------------
bool THtmlParser::init(void)
{
FLinkTags[0]="ADDRESS";
FLinkTags[1]="A";
FFrameTags[0]="IFRAME";
FFrameTags[1]="FRAME";
FFrameTags[2]="FRAME";
FFrameTags[1]="FRAME";
FImgTags[0]="IMG";
FAddOnTags[0]="LINK";
FAddOnTags[1]="EMBED";
FAddOnTags[2]="BGSOUND";
return false;
}
그리고 밑의 소스는 소멸자 이고요
THtmlParser::~THtmlParser()
{
delete FLinkes;
delete FImages;
delete FTags;
delete FText;
}
이 클래스를 제 프로젝트에서 사용을 하는데
우선
#pragma link "wininet.lib" // WinInet 라이브러리 링크
TForm1 *Form1;
THtmlParser* Parser;
씨플플 소스 부분에서 정의를 해 줬고요
OnCreate 부분에서
Parser = new THtmlParser; <- 메모리 할당을 했습니다.
그리고
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Parser->FHtml = RichEdit1->Text;
Parser->Execute();
Parser->FLinkes->SaveToFile("Links.txt");
RichEdit2->Lines->LoadFromFile("Links.txt");
/* RichEdit2->Lines->AddStrings(Parser->FText);
RichEdit3->Lines->AddStrings(Parser->FTags);
RichEdit4->Lines->AddStrings(Parser->FLinkes);*/
}
이렇게 사용을 하고
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete Parser;
}
위와 같이 종료를 시킬때 메모리에서 삭제 할려고 하는데 자구 에러가 나네요
코드가드도 뜨면서 메모리 릭이라고 하고요
소멸자의 위치를 어디로 해야 하는지 잘 모르겠네요
좀 알려 주세요
그럼 이만
|