Headerdatei richtig includieren



  • Ich habe meine eigene Datei server.h per #include "server.h" includiert, allerdings kann ich die Funktion jetzt in

    void __fastcall TForm1::ButtonStartServerClick(TObject *Sender)
    {
    
    }
    

    nicht nutzen, da sie dort unbekannt sind 😕 ? Wäre echt dankbar für Hilfe 🙂



  • bei der *.h mußte eigentlich nur

    #include <iostream> z.B. einfügen oder

    #include <iostream.h> einfügen.

    Wenn die Header jedoch wo anders drin ist muß dort der Pfad eingegeben werden. Wenn z.B. für OpenGL noch ein extra Ordner erstellt worden ist wäre der Pfad wie folgt:

    #include <OpenGL/OpenGL.h> 🙂

    Danach kannste eigentlich alle Funktionen Public benutzen.

    Versuch doch mal folgendes (Konsolen Anwendung):

    #include <stdio.h>
    #include <math.h>
    

    in die Header!

    Hier in die Konsolen Anwendung:

    void main()
    {
       double result, x = 0.5;
    
       result = sin(x);
       printf("The sin of %lf is %lf\n", x, result);
    }
    

    Wenn alles geklappt hat kannste nunr Projekt1.exe starten und er zeigt dir The sin of ... an 🙂 Wenn es nicht geklappt hat haste wohl ein Fehler beim BCB 😞



  • Evt. hab ich mich falsch ausgedrückt, hier der Code

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    //#include <windows.h>
    
    // Eigene Includes
    #include "getinfo.h"
    #include "server.h"
    
    // Globals
    int port        = 0;
    int max_clients = 0;
    
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    

    Die Informationen in meiner Server.h kann ich aber nicht in den Funktionen des BCB nutzen weil sie dort unbekannt sind grmf 😕



  • Änder es mal wie folgt um:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    //#include <windows.h>
    // Eigene Includes
    #include <getinfo.h>
    #include <server.h>
    
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    // Globals
    int port        = 0;
    int max_clients = 0;
    
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    


  • Dann kann ich aber nicht mehr aus der Header per

    Form1->StatusLabel->Caption = "WSAStartup in Init_Winsock() erfolgreich initialsiert!";
    

    auf die Komponenten zugreifen *argh*



  • versteh ich nicht wiso 😞



  • KeinPlan,
    es währe äußerst hilfreich, wenn Du uns
    1. über die Art der Fehlermeldung und
    2. (falls dann noch nötig) über den Inhalt Deiner server.h
    informieren könntest.



  • KeinPlan schrieb:

    Dann kann ich aber nicht mehr aus der Header auf die Komponenten zugreifen *argh*

    Tja, dann musst du in der Server.h eben noch die Header-Datei inkludieren, in der die Komponenten deklariert sind.



  • @dschensky

    Wenn ich schreibe das dann die Komponenten aus der Form1 unbekannt sind ist doch klar was ich meine ?

    @Webfritzi ich kanns gerade nicht testen aber ich nehme an das ist die unit1.h oder?



  • KeinPlan schrieb:

    @dschensky
    Wenn ich schreibe das dann die Komponenten aus der Form1 unbekannt sind ist doch klar was ich meine ?

    Nun ja, wenn alles so klar währe, müßtest Du die Frage vermutlich überhaupt nicht stellen bzw. würdest nicht so viele Antworten auf eine einfache Frage hervorrufen ...



  • Deine Logik ist echt toll.



  • Soll eine Unit auf eine Andere zugreifen, so muß diese dessen Header includen

    A. soll Unit1 auf die Unit "Server" zugreifen muß Unit1 die Server.h includen
    B. soll die Unit "Server" auf Unit1 zugreifen muß Server die Unit1.h includen

    gruß Micha


Log in to reply