Announcement

Collapse
No announcement yet.

Fehler E2316

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler E2316

    Hallo, sei einiger Zeit arbeite ich an einem SDI-Textprogramm. Erstmal wollte ich schaffen das man überhaupt damit Text öffnen kann, aber irgendwie kriege ich das nicht gebacken da ich die Meldung "[C++ Fehler] sdimain.cpp(48): E2316 '_fastcall TSDIAppForm::GetText(AnsiString)' ist kein Element von 'TSDIAppForm'" bekomme... Hier der Code:
    cpp.-Datei:
    Code:
    //---------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "SDIMain.h"
    #include "About.h"
    //---------------------------------------------------------------------
    #pragma resource "*.dfm"
    TSDIAppForm *SDIAppForm;
    //---------------------------------------------------------------------
    __fastcall TSDIAppForm::TSDIAppForm(TComponent *AOwner)
    	: TForm(AOwner)
    {
    }
    //---------------------------------------------------------------------
    
    void __fastcall TSDIAppForm::FileNew1Execute(TObject *Sender)
    {
      // Keine Aktion notwendig
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TSDIAppForm::FileOpen1Execute(TObject *Sender)
    {
      OpenDialog->Execute();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TSDIAppForm::FileSave1Execute(TObject *Sender)
    {
      SaveDialog->Execute();
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TSDIAppForm::FileExit1Execute(TObject *Sender)
    {
      Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TSDIAppForm::HelpAbout1Execute(TObject *Sender)
    {
      AboutBox->ShowModal();
    }
    //---------------------------------------------------------------------------
    void __fastcall TSDIAppForm::GetText(String Dateiname)
    {
    RichEdit1->Lines->LoadFromFile (Dateiname);
    }
    Und die h.-Datei:
    Code:
    //----------------------------------------------------------------------------
    #ifndef SDIMainH
    #define SDIMainH
    //----------------------------------------------------------------------------
    #include <vcl\ComCtrls.hpp>
    #include <vcl\ExtCtrls.hpp>
    #include <vcl\Buttons.hpp>
    #include <vcl\StdCtrls.hpp>
    #include <vcl\Dialogs.hpp>
    #include <vcl\Menus.hpp>
    #include <vcl\Controls.hpp>
    #include <vcl\Forms.hpp>
    #include <vcl\Graphics.hpp>
    #include <vcl\Classes.hpp>
    #include <vcl\Windows.hpp>
    #include <vcl\System.hpp>
    #include <ActnList.hpp>
    #include <ImgList.hpp>
    #include <StdActns.hpp>
    #include <ToolWin.hpp>
    //----------------------------------------------------------------------------
    class TSDIAppForm : public TForm
    {
    __published:
        TOpenDialog *OpenDialog;
        TSaveDialog *SaveDialog;
        TToolBar *ToolBar1;
        TToolButton *ToolButton9;
        TToolButton *ToolButton1;
        TToolButton *ToolButton2;
        TToolButton *ToolButton3;
        TToolButton *ToolButton4;
        TToolButton *ToolButton5;
        TToolButton *ToolButton6;
        TActionList *ActionList1;
        TAction *FileNew1;
        TAction *FileOpen1;
        TAction *FileSave1;
        TAction *FileSaveAs1;
        TAction *FileExit1;
        TEditCut *EditCut1;
        TEditCopy *EditCopy1;
        TEditPaste *EditPaste1;
        TAction *HelpAbout1;
        TStatusBar *StatusBar;
        TImageList *ImageList1;
        TMainMenu *MainMenu1;
        TMenuItem *File1;
        TMenuItem *FileNewItem;
        TMenuItem *FileOpenItem;
        TMenuItem *FileSaveItem;
        TMenuItem *FileSaveAsItem;
        TMenuItem *N1;
        TMenuItem *FileExitItem;
        TMenuItem *Edit1;
        TMenuItem *CutItem;
        TMenuItem *CopyItem;
        TMenuItem *PasteItem;
        TMenuItem *Help1;
        TMenuItem *HelpAboutItem;
            TRichEdit *RichEdit1;void __fastcall FileNew1Execute(TObject *Sender);
            void __fastcall FileOpen1Execute(TObject *Sender);
            void __fastcall FileSave1Execute(TObject *Sender);
            void __fastcall FileExit1Execute(TObject *Sender);
            void __fastcall HelpAbout1Execute(TObject *Sender);
    private:
    public:
        virtual __fastcall TSDIAppForm(TComponent *AOwner);
    
    __published:
    TRichEdit *TRichEdit1;
    void __fastcall FormClose
    (TObject *Sender, TCloseAction &Action);
    private:
    public:
    virtual void __fastcall GetTex (String Dateiname);
    
    };
    //----------------------------------------------------------------------------
    extern TSDIAppForm *SDIAppForm;
    //----------------------------------------------------------------------------
    #endif

  • #2
    Fehler in der Deklaration
    virtual void __fastcall GetTex (String Dateiname);

    "t" fehlt
    Christian

    Comment


    • #3
      Hmm... ANscheinend muss da noch etwas falsch sein, denn als ich das t hingeschrieben habe, kam mir diese Meldung: [Linker Fehler] Unresolved external '__fastcall TSDIAppForm::FormClose(System::TObject *, Forms::TCloseAction&)' referenced from C:\TEXTPROGRAMM\SDIMAIN.OBJ

      Comment


      • #4
        Nein, wenn du den Text liest ist das ein anderer Fehler:

        void __fastcall FormClose
        (TObject *Sender, TCloseAction &Action);


        Wo ist die Funktion dazu??
        Christian

        Comment


        • #5
          Meinst du so?
          virtual void __fastcall GetText (String Dateiname);
          virtual __fastcall SDIAppForm (TComponent *Owner);
          };
          Dann bekomme ich diese Meldungen:
          [Linker Fehler] Unresolved external '__fastcall TSDIAppForm::SDIAppForm(Classes::TComponent *)' referenced from C:\TEXTPROGRAMM\SDIMAIN.OBJ
          [Linker Fehler] Unresolved external '__fastcall TSDIAppForm::FormClose(System::TObject *, Forms::TCloseAction&)' referenced from C:\TEXTPROGRAMM\SDIMAIN.OBJ

          Comment


          • #6
            ??????????
            Christian

            Comment


            • #7
              Das heißt?

              Comment


              • #8
                Das heisst, dass

                - hier keiner den vollständigen Quelltext deines Programmes kennt (oben ja nur auszugsweise)-> wenn das oben tatsächlich der ganze Code in der CPP ist, dann ist die Header etwas "überfrachtet"

                - ich dir den Hinweis auf die FormClose Funktion gegeben habe (die fehlen könnte, aber deklariert ist), du aber offenbar an anderen Stellen schaust

                - letztendlich deine Headerdatei mit der dazugehörigen CPP-Datei nicht mehr konsistent ist

                - du offenbar dem C++Builder bei den "hauseigenen Funktionen / Ereignissen" (Close) durcheinander gebracht hast


                Also räume deine Header & CPP auf:

                Warum mehrfache Zugriffsattribute (public, private usw.)?

                Prüfe auch Rechtschreibfehler?

                Setze die Spezifizierer richtig ein -> Warum virtual?? du leitetest von deiner TForm noch ab?

                Schreibe etwas lesbarenen Code (Je Zeile ein Befehl, gleiche Einrückungen usw)

                Da keiner dein Quelltext hat........
                Christian

                Comment

                Working...
                X