[C++ Error] mainE.cpp(3464): E2314 Aufruf einer Nicht-Funktion



  • hei
    bekomme diesen Fehler: Aufruf einer Nicht-Funktion
    was ist bei "SaveProjectLabel(1,File(fileName));" falsch?

    void __fastcall TMain::editExeSettings()
    {
    ofstream File(fileName);                //open settings file
    SaveProjectLabel(1,File(fileName));
    ...
    File.close();
    }
    
    void __fastcall TMain::SaveProjectLabel(int iIndex,TObject *ofstream)
    {
    ...
    }
    

    bis bald dieleena



  • Hallo

    so richtig hast du Parameter und Funktionen noch nicht verstanden. Fangen wir mit der Funktion selber an. Du willst offenbar einen Stream als Parameter übergeben. Aber Parameter werden grundsätzlich als Typ Name definiert, und ofstream hat nichts mit TObject zu tun. Und als Name des Parameters sollte auch kein bereits definiertes Symbol genommen werden. Zu letzt sollten komplexe Typen (alles auser int, char, float...) als (konstante) Referenzen übergeben werden.
    Zusammenfassend ist also das die korrekte Schreibweise :

    void __fastcall TMain::SaveProjectLabel(int Index, ofstream& Stream)
    {
    ...
    }
    

    Dann kannst du auf diese Funktion zugreifen, aber ohne eine unsinnige Funktionsdeklaration

    ofstream File(fileName);                //open settings file
    SaveProjectLabel(1, File);
    

    bis bald
    akari



  • hei,
    dieses hatte ich auch getestet.

    SaveProjectLabel(1, File);
    

    Auch hier der gleiche Fehler.
    Dies ist der Fehler, den ich gemacht habe. "TObject *ofstream"

    void __fastcall TMain::SaveProjectLabel(int iIndex,TObject *ofstream)
    

    Super, Danke,
    bis bald dieleena



  • Hallo

    Nochmal : ofstream hat nichts mit TObject zu tun.
    Meine Veränderungen sind schon insgesamt nötig. Stell sicher, das auch in der Headerdatei von TMain auch die Funktion SaveProjectLabel als Member des Forms dekalriert ist, und oben in der Headerdatei der notwendige STL-Include steht

    #include <fstream> // Ohne .h!
    

    Desweiteren solltest du auch immer den Namespace mitverwenden

    void __fastcall TMain::SaveProjectLabel(int Index, std::ofstream& Stream)
    {
    ...
    }
    
    std::ofstream File(fileName); 
    // std::ofstream File(fileName.c_str()); falls fileName ein AnsiString ist
    SaveProjectLabel(1, File);
    

    Wenn du immer noch Fehler bekommst, poste deinen relevanten Code mitsamt Deklarationen und Headerdatei.

    bis bald
    akari


Log in to reply