Ini Datei erstellen



  • so hier mein code:
    zum lesen

    TIniFile *ini;
       ini = new TIniFile( ChangeFileExt(Application->ExeName, ".INI" ));
       Form1->Top     =  ini->ReadInteger( "Form", "Top", 100 );
       Form1->Left    =  ini->ReadInteger( "Form", "Left", 100 );
       Form1->Width   =  ini->ReadInteger( "Form", "Width", 47);
       Form1->Caption =  ini->ReadString( "Form", "Caption",
                                   "Default Caption" );
       ini->ReadBool( "Form", "InitMax", false ) ?
             WindowState = wsMaximized : 
             WindowState = wsNormal;
       delete ini;
    

    und zum schreiben

    TIniFile *ini;
       ini = new TIniFile(ChangeFileExt( Application->ExeName, ".ini" ) );
       ini->WriteInteger( "Form", "Top", Form1->Top );
       ini->WriteInteger( "Form", "Left", Form1->Left );
       ini->WriteInteger( "Form", "Width", Form1->Width);
       ini->WriteString ( "Form", "Caption", Form1->Caption );
       ini->WriteBool   ( "Form", "InitMax",
                           WindowState == wsMaximized );
       ini->UpdateFile();
       delete ini;
    


  • Hallo

    und der Schreib-Teil wird auch ausgeführt? Setzt mal ein Breakpoint abeim new und schau, wie der Ablauf ist.

    bis bald
    akari



  • der code zum schreiben wird irgendwie gar nicht mehr verwendet.



  • Hallo

    Wenn du es im Close-Event wie im Beispiel hast: Ist denn der Verweis im Objektinspektor des Forms zu der Funktion noch da? Ansonsten dort neu auswählen.

    bis bald
    akari



  • Hallo nochmal

    also der Eintrag ist noch da

    hab jetzt mal den code in einem neuen (leeren) projekt ausprobiert. dort funktioniert er.



  • Hallo

    hab auch gerade mal das Beispiel nachgebaut. Funktioniert. Muß also an deinem Einbau liegen. Poste mal die ganze Funktion.

    bis bald
    akari



  • void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
       TIniFile *ini;
       ini = new TIniFile(ChangeFileExt( Application->ExeName, ".ini" ) );
       ini->WriteInteger( "Form", "Top", Form1->Top );
       ini->WriteInteger( "Form", "Left", Form1->Left );
       ini->WriteInteger( "Form", "Width", Form1->Width);
       ini->WriteString ( "Form", "Caption", Form1->Caption );
       ini->WriteBool   ( "Form", "InitMax",
                           WindowState == wsMaximized );
       ini->UpdateFile();
       delete ini;
    }
    

    dieser code geht wohl nicht in meinem Projekt



  • Hallo

    bei mir geht er.
    Wenn natürlich der Breakpoint bei new nicht erreicht wir, mußt du wo anders suchen.

    bis bald
    akari



  • und da ist das Problem.
    der breakpoint wird nie erreicht und ich hab keine ahnung warum das so sein könnte.



  • Hallo

    1. Die Funktion OnClose ist als Eventfunktion eingetragen?
    2. Der Breakpoint ist nicht auf der Deklaration *TIniFile ini;, sondern auf der Zeile mit der Erstellung?
    3. Du kompilierst im Debug-Modus?

    bis bald
    akari



  • hab das Problem erkannt! 🙂

    ich beende das Programm immer über ein Popupmenü und da reagiert es dann irgendwie nicht auf das FormClose.



  • Hallo

    versetzt den Schreib-Teil eben in den Destroy-Event, der wird immer aufgerufen.

    bis bald
    akari



  • Don't use OnCreate and OnDestroy, use C++ constructors and destructors instead

    Davon abgesehen deutet das "Überspringen" des OnClose auf einen Fehler an anderer Stelle im Programm hin. Was ist denn mit OnCloseQuery? Und was genau machst du beim Aufruf des Menüeintrages?


Anmelden zum Antworten