Problem bei Implementation einer Unit



  • Hallo zusammen,
    ich schaffe es gerade irgendwie nicht eine andere Unit zu implementieren.
    In dieser Unit2 stehen drei Prozeduren:

    #pragma hdrstop
    
    #include "Unit2.h"
    #include "Unit1.h"
    
    //---------------------------------------------------------------------------
    
    #pragma package(smart_init)
    
    void fgraph (void)
    {
     ...
    }
    void bgraph1 (void)
    {
     ...
    }
    
    void bgraph2 (void)
    {
     ...
    }
    

    Ich kann diese Prozeduren aber nicht in Unit1 nutzen und weiß nicht warum. So siehts bei mir in der ersten Unit aus:

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "Unit2.h"
    
    ...
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     fgraph(); //Aufruf einer undefinierten Funktion
    }
    

    Was mache ich genau falsch? Beide UNits sind im selben Ordner abgespeichert und haben keine Fehler.

    Vielen Dank für eure Hilfe
    lg, freakC++



  • die Funktionen gehören ja auch nicht zu Unit2 und deswegen kannst du auch nicht über die Headerdatei von Unit1 auf sie zugreifen.

    greetz KN4CK3R



  • das heißt ich muss was ändern?



  • Aufruf der Funktion mit Form2->bgraph1(); ( Wenn es ein Formular ist und geöffnet ),

    oder als DLL erstellen

    oder FunktionsText in die Unit übernehmen (wenns kein Formular ist).



  • weder noch:

    //Header
    class ... : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
    	...
    private:	// Benutzer-Deklarationen
    public:		// Benutzer-Deklarationen
    	void deinefunc();
    	__fastcall ...(TComponent* Owner);
    };
    
    //CPP
    void __fastcall ...::deinefunc() { }
    

    greetz KN4CK3R



  • Hi,

    @KN4CK3R, vermutlich liegen wir beide daneben.

    Es sieht so aus, als hätte er eine Unit2 ohne Formular (*.dfm für die anderen ;))

    Dann muss er seine Funktionen in der Headerdatei von Unit2 deklarieren. Dann reicht es für den Zugriff (unter der Voraussetzung,
    dass Unit2.cpp zum Projekt hinzugefügt wurde.

    mfg
    kpeter



  • Hallo,
    ja, ich habe eine Unit ohne Formular. Gut, dann werde ich die Prozeduren mal in die Headerdatei schreiben.

    Vielen Dank
    lg, freakC++


Anmelden zum Antworten