struct über mehrer Forms



  • Halli Hallo, ich hab mal ne ganz dringende Frage! Ich verwende eine selbst erstellte Struktur - diese ist in der Datei "funktionen.h" hinterlegt und soll mit in das Programm mit eingebettet werden.

    Dazu wie folgt:

    struct tagesbericht
    {
    
      AnsiString name, kfz, personalnr, ressort;
      AnsiString arbeitszeit_beginn, arbeitszeit_ende;
      AnsiString abfahrt, ankunft;
    
      TDate datum;
      int steuer;
    
    };
    // Structur Tagesbericht
    
    bericht * tagesbericht = new tagesbericht;
    

    Soweit so gut, dann habe ich in allen Dateien die "funktionen.h" mit eingetragen. Nur leider, sagt mir der Compiler immer wieder "Fehler in der Deklarationssyntax"

    Wo liegt denn nun der Fehler?



  • Hi,

    in welcher Zeile der Fehler auftritt sagt dir doch die Fehlermeldung. Schliesslich wird dort sogar die Zeilennummer angegeben.



  • Die Fehlermeldung tritt, bei dem Zeiger auf :

    bericht * tagesbericht = new tagesbericht;
    

    Wenn ich den Zeiger in der "funktionen.h" erstelle, kommt die Fehlermeldung.
    Setzte ich den Zeiger in Form1 (FormCreate) - erscheint keine Fehlermeldung, aber in "funktionen.h" ist "bericht" ein undefeniertes Symbol!

    Und nun?



  • Probiers mal mit:

    tagesbericht *bericht = new tagesbericht;
    .
    .
    .
    delete bericht;

    Deine Variable ist bericht, tagesbericht ist der Typ (struct)!



  • Danke für die schnelle Antwort. Nur hab ich noch ein Problem.

    Nun möchte ich von allen Forms auf die struct tagesbericht * bericht zugreifen können. Dazu habe ich die Datei "funktionen.h" ja auch mit eingebunden - nur leider läuft da nicht alles so rund wie ich mir das vorstelle.

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      bericht = new tagesbericht;
    }
    //---------------------------------------------------------------------------
    

    Über Form1 erstelle ich quasi das neue Objekt. Soweit sogut, nur kann ich dann von den anderen Forms nicht auf die struct zugreifen - da dann ein EAccessViolation auftritt.

    Zudem bekomme ich immer noch eine Linker Warnung:

    [Linker Warnung] Public symbol '_bericht' defined in both module C:\TAGESBERICHTE\MAIN.OBJ and C:\TAGESBERICHTE\EINSTELLUNG.OBJ
    [Linker Warnung] Public symbol '_bericht' defined in both module C:\TAGESBERICHTE\MAIN.OBJ and C:\TAGESBERICHTE\DRUCKEN.OBJ
    [Linker Warnung] Public symbol '_bericht' defined in both module C:\TAGESBERICHTE\EINSTELLUNG.OBJ and C:\TAGESBERICHTE\DRUCKEN.OBJ

    Womit hängt das zusammen?

    [ Dieser Beitrag wurde am 31.03.2003 um 22:18 Uhr von Thnaxy editiert. ]



  • Wenn Du in mehreren Formularen auf die Variable zugreifen willst, muss:

    Die Variable in der Hauptform (erste erzeugte) 'normal' deklariert werden und in allen anderen mit EXTERN !!! (schau mal in die Hilfe)

    Du includierst funktionen.h in allen Modulen? Hast Du in Funktionen.h auch sowas mit

    #ifndef FunktionenH

    #define FunktionenH

    #endif

    drin? damit unterbindest Du die mehrfachdefinitionen (Warnungen)

    [ Dieser Beitrag wurde am 31.03.2003 um 22:53 Uhr von DerAltenburger editiert. ]



  • Nun möchte ich von allen Forms auf die struct tagesbericht * bericht zugreifen können.

    Steht alles in der FAQ. "Variablen in mehreren Formularen verwenden" oder so ähnlich.


Anmelden zum Antworten