(Borland C++...) TIniFile! Mehr Fehler als Quelltext!



  • Ich habe mir ein kleines Programm geschrieben.
    so wie das:

    int main()
    {
    int x, y, z;
    x=10;
    y=20;
    z=45;
    printf("  x=%d  y=%d  z=%d", x, y, z);
    TIniFile *ini;
    ini = new TIniFile("Test.ini");
    WriteInteger("Test", "int_x", x);
    WriteInteger("Test", "int_y", y);
    WriteInteger("Marcel", "int_z", z);
    delete ini;
    x=0;
    y=0;
    z=0;
    TIniFile *ini; ini = new TIniFile("Test.ini");
    ReadInteger("Test", "int_x", &x);
    ReadInteger("Test", "int_y", &y);
    ReadInteger("Marcel", "int_z", &z);
    printf("  x=%d  y=%d  z=%d", x, y, z);
    delete ini;
    getchar()
    return 0;
    }
    

    Leider geht es überhaupt net er meldet nur Fehler wie:
    [C++ Error]Unit1.cpp(15): Call to undefined function 'WriteInteger'.
    [C++ Error]Unit1.cpp(22): Multiple declaration for 'ini'.
    [C++ Error]Unit1.cpp(13): Earlier declaration of 'ini'.
    [C++ Error]Unit1.cpp(15): Call to undefined function 'ReadInteger'.

    Ich habe schon haufen headers reingemacht aber es funtzt einfach net 😡 .
    Könnt ihr mir Helfen?



  • 1.) Was ist ReadInteger? Wo ist es definiert? Was ist WriteInteger? Wo ist es definiert? Standard ist das keiner...

    2.) Die Variable ini wird bei dir mehrmals erzeugt!:

    //hier:
    TIniFile *ini;
    
    //und hier:
    TIniFile *ini;
    

    delete gibt nur den Inhalt auf den der Zeiger zeigt frei (mit new ist es meistens Speicher am Heap). Aber keineswegs löscht es den Variablennamen aus dem Programm!

    MfG SideWinder



  • Er muss aber wissen was WriteInteger und REadInteger ist! ich habe schliesslich diese Header:

    #include <vcl\inifiles.hpp>
    #include <stdio.h>
    #include <vcl\vcl.h>
    #include <vcl.h>
    

    und in vcl\inifiles.hpp sind alle diffinert hier meine vcl\inifiles.hpp:

    //----------------------------------------------------------------------------
    // IniFiles.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0
    // From: IniFiles.pas
    //----------------------------------------------------------------------------
    #ifndef IniFilesHPP
    #define IniFilesHPP
    //----------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Windows.hpp>
    #include <System.hpp>
    #pragma warn -par
    #pragma warn -hid 
    #pragma warn -inl
    
    namespace Inifiles
    {
    //-- type declarations -------------------------------------------------------
    class __declspec(delphiclass) TIniFile;
    class __declspec(pascalimplementation) TIniFile : public System::TObject
    {
        typedef System::TObject inherited;
    
    private:
        System::AnsiString FFileName;
    
    public:
        __fastcall TIniFile(const System::AnsiString FileName);
        System::AnsiString __fastcall ReadString(const System::AnsiString Section, const System::AnsiString 
            Ident, const System::AnsiString Default);
        void __fastcall WriteString(const System::AnsiString Section, const System::AnsiString Ident, const System::AnsiString 
            Value);
        long __fastcall ReadInteger(const System::AnsiString Section, const System::AnsiString Ident, long 
            Default);
        void __fastcall WriteInteger(const System::AnsiString Section, const System::AnsiString Ident, long 
            Value);
        bool __fastcall ReadBool(const System::AnsiString Section, const System::AnsiString Ident, bool Default
            );
        void __fastcall WriteBool(const System::AnsiString Section, const System::AnsiString Ident, bool Value
            );
        void __fastcall ReadSection(const System::AnsiString Section, Classes::TStrings* Strings);
        void __fastcall ReadSections(Classes::TStrings* Strings);
        void __fastcall ReadSectionValues(const System::AnsiString Section, Classes::TStrings* Strings);
        void __fastcall EraseSection(const System::AnsiString Section);
        void __fastcall DeleteKey(const System::AnsiString Section, const System::AnsiString Ident);
        __property System::AnsiString FileName = {read=FFileName, nodefault};
    public:
        /* TObject.Destroy */ __fastcall virtual ~TIniFile(void) { }
    
    };
    
    //-- var, const, procedure ---------------------------------------------------
    
    }   /* namespace Inifiles */
    
    #pragma warn .par
    #pragma warn .hid 
    #pragma warn .inl
    
    #if !defined(NO_IMPLICIT_NAMESPACE_USE)
    using namespace Inifiles;
    #endif
    //-- end unit ----------------------------------------------------------------
    #endif  // IniFiles
    

    Warum geht es trotz dem nicht????

    PS ich habe den Teil:

    x=0;
    y=0;
    z=0;
    TIniFile *ini; ini = new TIniFile("Test.ini");
    ReadInteger("Test", "int_x", &x);
    ReadInteger("Test", "int_y", &y);
    ReadInteger("Marcel", "int_z", &z);
    printf("  x=%d  y=%d  z=%d", x, y, z);
    delete ini;
    

    Entfernd

    MFG H@ckepeter



  • mach doch mal ne ganze leere funktion WriteInteger die garnichts macht und ruf die auf und guck ob das geht



  • Es geht net es geht net es geht net!!!
    Hab sogar noch mal nen anderen Compiler Ausprobiert!
    Könnte einer so net sein und das mal Compilieren:

    #include <vcl\inifiles.hpp>
    #include <stdio.h>
    #include <vcl\vcl.h>
    #include <vcl.h>
    
    int main()
    {
    int x, y, z;
    x=10;
    y=20;
    z=45;
    
    printf("  x=%d  y=%d  z=%d", x, y, z);
    TIniFile *ini;
    ini = new TIniFile("Test.ini");
    WriteInteger("Test", "int_x", x);
    WriteInteger("Test", "int_y", y);
    WriteInteger("Marcel", "int_z", z);
    delete ini;
    
    getchar()
    return 0;
    }
    

    Der Code wurde gemacht für Win 98 Dos-Konsole in C++. Es wäre schon ein erfolgt wenn überhaut ein Fenster auf geht! Wenn ihr Fehler findet weist mich bitte trauf hin!
    Wenn ihr die vcl\inifiles.hpp net habt könnt ihr etwas weiter oben den Quelltext nehmen. Am bestens wärs aber wenn euer Compiler ne Geile TIniFile-Header hat.

    Danke im Voraus

    MFG H@ckepeter



  • frag mal bei den profis des borlandforums...



  • Da verschieb ich es jetzt auch am besten hin :).

    MfG SideWinder


Anmelden zum Antworten