Klassenzugriff nach Zufügen von TIdSMTP nicht mehr möglich



  • hallo zusammen,

    irgendwie komme ich nicht weiter. Ich habe, um den Fehler mal nach zu vollziehen, mir ein einfaches Formular angelegt auf dem ein Button und ein Labelfeld ist sowie eine ADOConnection. Dazu habe ich eine cpp mit einer Klasse die mir meinen Connectionstring wieder gibt. Bei Buttonklick soll mir der String im Label angezeigt werden. Eigentlich nicht schwierig:

    [cpp]#include <vcl.h>
    #pragma hdrstop
    
    #include "main.h"
    #include "adoconnect.cpp"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	connect ado;
    	Label1->Caption = ado.str();
    }[/cpp]
    

    Das funktioniert auch einwandfrei.
    gehe ich nun hin und platziere auf dem Formular nun eine TIdSMTP - Komponente und kompilliere das ganze wieder bekomme ich folgende Fehlermeldung:

    [C++ Fehler] main.cpp(18): E2379 In Anweisung fehlt ;
    [C++ Fehler] main.cpp(19): E2451 Undefiniertes Symbol 'ado'
    

    was soll das??? 😮

    Der verantwortliche Teil in der adoconnect.cpp sieht so aus:

    [cpp]String connect::str(void) const
    {
    	TStringList *ado = new TStringList();
    	ado->LoadFromFile("ado.ini");
    	AnsiString adostr = ado->Strings[0];
    	delete ado;
    	return adostr;
    }[/cpp]
    

    kann mir einer von euch sagen was hier falsch läuft?

    Herzlichen Dank schon einmal für eure Mühen 🕶



  • Hallo,

    Was soll denn das hier?

    #include "adoconnect.cpp"
    

    Du solltest die Headerdatei mit der Daklaration von connect inkludieren. Die Fehlermeldung besagt nur das der Compiler connect nicht kennt.



  • hi Braunstein,

    die adoconnect.cpp hat keine header datei. daher kann ich auch keine includieren.

    der compiler kennt connect ja nur nicht mehr wenn die TIdSMTP - Komponente eingefügt wird. bei meinen anderen komponenten läuft das prog und connect wird auch erkannt.



  • Setz

    #include "adoconnect.cpp"
    

    einfach mal über

    #include "main.h"
    


  • hi rean,

    das hab ich schon versucht. leider ohne erfolg 😞



  • Wenn du keine Headerdatei hast, dann solltest du eine erzeugen. Da kommen nämlich alle Deklarationen rein. Bitte inkludiere niemals cpp-Dateien. Diese Headerdatei mußt du dann überall dort inkludieren, wo du connect brauchst.


Anmelden zum Antworten