new TADOQuery?
-
Moin zusammen
Auch wenn die Frage jetzt vllt blöd klingt, ich würd gern so was machen wie:TADOQuery myQuery = new TADOQuery()
Dann bekomm ich die Fehlermeldung : keine Übereinstimmung für TADOQuery::TADOQuery() gefunden.
Normalerweise benutz ich für meine Querys son hübsches Object auf meinem Formular, da brauch ich auch keine Insanziirung mit new zu machen.Wär nett wenn mir jmd grad die Zeile posten könnt, in der Forumssuche bin ihc leider nicht fündig geworden
-
Hallo
Auch wenn die Frage jetzt vllt blöd klingt, ich würd gern so was machen wie:
Nein, die Frage selber ist nicht blöd, dynamische Komponenten gibts öfters.
Schade ist nur das du die eigentlich sehr aussagekräftige Fehlermeldung des Compilers nicht verstehst. Der weist dich drauf hin das die Klasse TADOQuery (wie alle andern VCL-Komponenten) keinen Standardkonstruktor hat, sondern nur einen mit einem Parameter : dem Owner. Entweder übergibt du dort z.B. ein Form selber, das dann für das Löschen der Instanz verantwortlich ist.TADOQuery myQuery = new TADOQuery(Form1);
Hast du kein passenden Owner, kannst du auch 0 übergeben, bist dann aber selber für das Löschen verantwortlich.
TADOQuery myQuery = new TADOQuery(0); // benutzen delete myQuery;
bis bald
akari
-
Schau dir mal die DEfinition der Klasse TADOQuery an - die hat anscheinend keinen Default-Ctor, also mußt du einen anderen Ctor verwenden (indem du die benötigten Parameter in die ()-Klammern reinschreibst).
Edit: zu langsam und zu ungenau - hier im Board ist akari eindeutig besser informiert
-
Ja, akari hat mir schonmal gut geholfen
Zuerst mal danke an euch beide
Ich hab das dann so gemacht wie du geschrieben hast, und bekam dann die Fehlermeldung das Klassen im VCL-Stil mit new erstellt werden müssen...
Ok, Borland-Hilfe auf und nach VCL gesucht:
VCL-Klassen dürfen nicht statisch definiert werden. Sie müssen beim Heap erstellt werden.Zum Beispiel:
void foo(void)
{
Tobject o1; // Fehler;
Tobject *o2 = new TObject();
}Also hab ich dann
TADOQuery *myQuery = new TADOQuery(0);
benutzt, was auch durchlief... bis zur nächsten Zeile
if(MyQuery(myQuery)) {
Borland-Hilfe: "Ein VCL-Objekt kann nur mit einem Zeiger angesprochen werden." Hab ich doch gemacht mit dem Stern, oder?
Irgendwas hab ich wohl nicht verstanden?
-
Bei der Deklaration hast du den Stern verwendet, bei der Verwendung (im if()) aber nicht.
Wie ist denn die Funktion MyQuery() deklariert? (ich tippe darauf, daß sie ihren Parameter nicht als Zeiger entgegennimmt)
-
Ich habs ich habs
Mann mus nur bei der aufrufenden Mothode den Stern mitangeben, nicht nur beim Aufruf, und darf dann nicht vergessen das auch im Header richtig zu deklarieren *freu*
he, vielleicht versteh ich c ja auch noch irgendwann
Danke nochmal an euch beide
-
CStoll schrieb:
Bei der Deklaration hast du den Stern verwendet, bei der Verwendung (im if()) aber nicht.
Wie ist denn die Funktion MyQuery() deklariert? (ich tippe darauf, daß sie ihren Parameter nicht als Zeiger entgegennimmt)
genau... hätt ich mit logischem denken auch drauf kommen müssen