[C Builder] Wlasny komponent & problem

0

Witam
Mam taki problem: tworze wlasny komponent:

plik Html1.h:
class PACKAGE Html : public TComponent
{
private:
TStringList plik;
protected:
public:
__fastcall Html(TComponent
Owner);
void setFileContent(TStringList *file);
__published:
};

plik Html1.cpp:
static inline void ValidCtrCheck(Html )
{
new Html(NULL);
}
__fastcall Html::Html(TComponent
Owner)
: TComponent(Owner)
{
}
namespace Html1
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(Html)};
RegisterComponents("Standard", classes, 0);
}
}
void Html1::setFileContent(TStringList *file)
{
}

Nastepnie po dodaniu komponentu (Html1) do formularza oraz wywolaniu funkcji:
Html1->SetFileContent(plik) otrzymuje blad:
Unresolved external 'Html::setFileContent(Classes::TStringList *) referenced from...
Ktos wie co jest grane? Oczywiscie formularz includuje plik naglowkowy Html1.h. Jesli funckja jest zdefiniowana w ciele klasy to wszystko jest ok a jesli w pliku Html1.cpp to cos nie gra.

0

Przyjrzyj się dobrze :D

0

Liczylem na troche wiecej pomocy

0
class PACKAGE Html
...

void Html1::setFileContent(TStringList *file)
{
}

A teraz widzisz błąd??? ;P

0

Jesli o to chodzi to jest to zwykla literowka przy wklejeniu tutaj fragmentu kodu. Zmiana Html1 na Html niczego nie zmienia

0

Kolejny przyklad:
Plik naglowkowy:
class PACKAGE HtmlParser : public TComponent
{
private:
int dupa;
protected:
public:
__fastcall HtmlParser(TComponent* Owner);
void __fastcall jakasFunkcja();
__published:
};

plik cpp:
static inline void ValidCtrCheck(HtmlParser )
{
new HtmlParser(NULL);
}
//---------------------------------------------------------------------------
__fastcall HtmlParser::HtmlParser(TComponent
Owner)
: TComponent(Owner)
{
}
//---------------------------------------------------------------------------
namespace Htmlparser
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(HtmlParser)};
RegisterComponents("Standard", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall HtmlParser::jakasFunkcja()
{
}

0

A jak dodajesz pliki *.cpp do projektu???

0

Probowalem dodawac sam plik naglowkowy, probowalem tez dodawac plik cpp. Zazwyczaj po napisaniu #include "HtmlParser.cpp" borland sie wywala.

0

Poza tym mam cos takiego:
#pragma package(smart_init)
#pragma link "HtmlParser"
#pragma resource "*.dfm"

0

Nieeee, tak się nie dodaje plików cpp. Includujesz pliki *.h, a *.cpp, *.c itd. dodajesz via 'Add to project'.

0

Ale skoro to jest komponent to mialem zamiar korzystac z niego tak jak z kazdego innego komponentu dla ktorego nie trzeba includowac zadnych plikow cpp. W pliku naglowkowym projektu daje tylko #include "HtmlParser.h"

0

No to co??? Przecież taki komponent instalujesz (czyli kompilujesz - o ile to konieczne), a wtedy kompilator sam zadba o dołączenie odpowiednich *.obj'ów do projektu. Jeżeli chcesz testować komponent bez instalacji to po prostu dodaj wszystkie pliki *.cpp do projektu (Add to project), zaincluduj nagłówki itd.

0

Ok dzieki za pomoc. Myslalem ze mozna rozwiazac to jakas inna droga ale tak tez moze byc. thx

1 użytkowników online, w tym zalogowanych: 0, gości: 1