|
안녕하세요
만해입니다.
지난번 부터 하고 있던
웹 로봇을 만들기 위해서
지금 파서를 지난번에 있던거를 뜯어 고치고 있는데요
분명히 함수 선언밑 여러가지로 다 고쳐놨는데요
void __fastcall TForm1::BodyParser(AnsiString html)
{
THTMLParser* hParser = new THTMLParser();
hParser->Lines->Add(html);
hParser->Execute();
TStringList * AList = new TStringList();
AList = hParser->GetTagProperty("A","HREF");
}
이게 호출 부분 이고요
class DELPHICLASS THTMLParser;
class PASCALIMPLEMENTATION THTMLParser : public System::TObject
{
typedef System::TObject inherited;
private:
AnsiString Text;
AnsiString Tag;
bool isTag;
bool isExecute;
void __fastcall AddText(void);
void __fastcall AddTag(void);
public:
Classes::TList* parsed;
Classes::TStringList* Lines;
__fastcall THTMLParser(void);
__fastcall virtual ~THTMLParser(void);
void __fastcall Execute(void);
bool __fastcall IsExe(void);
Classes::TStringList* __fastcall GetTagProperty(AnsiString ATag, AnsiString AProperty);
};
이쪽은 함수 선언 부분이고요
function THTMLParser.GetTagProperty(ATag , AProperty : string ):TStringList;
var
j,i:integer;
obj:TObject;
HTMLTag:THTMLTag;
HTMLParam:THTMLParam;
begin
if not IsExe then
Execute;
for i:= 1 to parsed.count do
begin
obj:=parsed[i-1];
if obj.classtype=THTMLTag then
begin
HTMLTag:=THTMLTag(obj);
if HTMLTag.Name = ATag then
begin
for j:= 1 to HTMLTag.Params.count do
begin
HTMLParam:=HTMLTag.Params[j-1];
if HTMLParam.key = AProperty then
Result.Add(HTmlParam.value);
end;
end;
end;
end;
obj.Destroy;
HTMLTag.Destroy;
HTMLParam.Destroy;
end;
이것은 실제 루틴 부분입니다.
우선은 빌더에서는 코딩상에서는 별 에러가 없고요
다만 에러 나는건
[Linker Error] Unresolved external '__fastcall Htmlpars::THTMLParser::GetTagProperty(System::AnsiString, System::AnsiString)' referenced from D:\PROJECT\SOCKET\UNIT1.OBJ
기존에 있던 소스에 제가 방금전에 올려 놓은 소스를 추가 시켯을 뿐인데요
뭔가 잘 안되네요
좀 봐주세요~
PS. 그런데 이 질문은 델파이란에 올려놔야 하는지
여기 올려 놔야 하는지 잘 모르겠네요
소소는 델파이인데, 호출 부분은 빌더니 쩝~ 구분이 잘 안되네요 하하~
고수님들의 조언 바랍니다.
|