[C++Builder] Service Anwendung mit vcl-Komponenten nutzen
-
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte eine Service Anwendung starten und in dieser die verschiedenen Komponenten benutzen, die ich zur auswahl habe.
Wenn ich jetzt z.B. eine TADOConnection - Komponenten in das Fenster "Service1"
ziehe, dann legt BCB mir gleich ein Zeiger auf das Objekt in der Klasse
TService1 an.class TService1 : public TService { __published: // Von der IDE verwaltete Komponenten TADOConnection *ADOConnection1; ... }Wenn ich jetzt zum Bsp in der Methode
__fastcall TService1::TService1(TComponent* Owner) : TService(Owner) { }versuche auf diese Komponenten drauf zu zugreifen (z.B. ADOConnection1->...), dann bringt er mir immer diesen Fehler
[C++ Fehler] Unit1.cpp(1): Die Programmierhilfe kann nicht aufgerufen werden, da der Quelltext Fehler enthältMeine Frage ist jetzt, wie ich auf diese Komponente drauf zugreifen kann???
Das komische ist, das es so schon mal funktioniert hat aber jetzt ist irgendwie der Wurm drin!
Kann mir einer weiter helfen?Danke für die Antworten
Gruß
-
Das ist meistens ein Zeichen eines Syntax-Fehlers...
-
hm, bei mir funktioniert das ohne Probleme. Hab einfach eine Service-Anwendung erstellt und eine ADOConnection drauf getan.
Ich würde vermuten, dass in der Headerdatei, oder einer anderen eingebundenen Headerdatei, ein Tippfehler ist.
-
Hmm das kann möglich sein, doch komisch ist, dass ich eigentlich nur die vordefinierten Sachen vom BCB nehme und nichts dazu schreibe.
Also ich starte eine Service Anwendung, setze die ADOConnection - Komponeten in das Servicefenster und versuche mit der Komponente irgendwas zu machen! Geht aber nicht!
Kann es sein, dass mein BCB irgendwie verstellt ist und es deshalb nicht funktioniert?
-
Ich wüßte nicht, was man da verstellen kann, das einen solchen Effekt verursacht. Und das passiert tatsächlich auch in einem komplett neuen Projekt, mit nur der ADO-Connection drin?
-
Ja! Komisch oder?!
Ich weiß halt auch nicht, was da schief läuft.
Muss man dieses Projekt vielleicht irgendwo besonders abspeichern oder so?
-
versuch mal:
- erstell ein komplett neues projekt
- speichere es ab
- versuch es nochmals
- wenn es nicht klapt, compilier es mal
- nochmal testenich hatte schon den selben fehler, da musste ich das Programm kurz compilieren und dan gings wieder
BigNeal
-
Wenn ich versuche es zu compilieren, dann spuckt er mir folgende Exception aus:
Im Projekt Projekt2.exe ist eine Exception der Klasse EClassNotNound aufgetreten. Meldung: 'Klasse TADOConnection nicht gefunden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.Hier mal den Code, den BCB beim erstellen des Projektes schreibt:
Unit1.cpp
//--------------------------------------------------------------------------- #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "trayicon" #pragma resource "*.dfm" TService1 *Service1; //--------------------------------------------------------------------------- __fastcall TService1::TService1(TComponent* Owner) : TService(Owner) { } TServiceController __fastcall TService1::GetServiceController(void) { return (TServiceController) ServiceController; } void __stdcall ServiceController(unsigned CtrlCode) { Service1->Controller(CtrlCode); } //---------------------------------------------------------------------------Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <SysUtils.hpp> #include <Classes.hpp> #include <SvcMgr.hpp> #include <vcl.h> #include "trayicon.h" #include <ADODB.hpp> #include <DB.hpp> //--------------------------------------------------------------------------- class TService1 : public TService { __published: // Von der IDE verwaltete Komponenten TADOConnection *ADOConnection1; private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TService1(TComponent* Owner); TServiceController __fastcall GetServiceController(void); friend void __stdcall ServiceController(unsigned CtrlCode); }; //--------------------------------------------------------------------------- extern PACKAGE TService1 *Service1; //--------------------------------------------------------------------------- #endifvon mir wurde nichts zusätzlich hinzugefügt.
-
Das funktioniert bei mir ebenfalls (ADOConnection + TrayIcon hinzugefügt)
Was mir noch einfällt:
Hast Du die Updates des BCB installiert?
In welchem Verzeichnis speicherst Du das Projekt?
-
Ich kann dein Code ohne probleme compilieren, muss woanderst liegen
Ich benutze BCB 6 Pro, du?
-
Ich benutze den Borland C++Builder 6 Professional.
Habe aber keine Updates installiert.
Mich wundert das ganze nur, weil es gestern noch ging ohne Probleme.
Jetzt bringt er immer diese Exception.Da stimmt bestimmt irgendetwas an den Einstellungen nicht!
-
Die Updates 1, 2 und 4 solltest Du dringenst installieren. So kannst Du nicht mal sicher sein, dass die richtige Fehlermeldung ausgegeben wird. In der deutschen Version war da ein übler Bug drin...
-
Mal ne blöde Frage, wo kann man denn diese Updates bekommen?
-
Bei www.borland.de
Dort auf 'Downloads' klicken und unter 'Registered Users' auf 'C++ Builder' klicken. Rechts kannst Du dann Updates auswählen, einloggen und die deutschen Updates runterladen.
-
Joe_M. schrieb:
Die Updates 1, 2 und 4 solltest Du dringenst installieren.
AFAIK sind die Updates kumulativ, es sollte also ausreichen, v4 zu installieren.
-
skluge schrieb:
Hallo zusammen,
class TService1 : public TService { __published: // Von der IDE verwaltete Komponenten TADOConnection *ADOConnection1; ... }Wenn ich jetzt zum Bsp in der Methode
__fastcall TService1::TService1(TComponent* Owner) : TService(Owner) { }Also wenn das alles ist, dann fehlt da auf jeden Fall das ";" am Ender der Deklaration