OOPOberflächenprogrammierung: Adressverwaltungsproblem!



  • Nabend!

    Ich habe hier ein Problem mit einem Adressverwaltungsprogramm.
    Das Problem sind die Vor/Zurück-Buttons.
    Das Programm liest die Adresse aus einer Textdatei aus.
    Ich habe es aber nicht geschafft einen nächsten Datensatz anzeigen zu lassen,sondern immer nur den ersten.

    Gegeben sind 5 Editfelder, Name,Adresse etc...und halt die 2 Buttons (ein paar Label->eher unwichtig,da Caption = Vorname,Name etc)

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    #include "stdio.h"
    #include "stdlib.h"
    #include "conio.h"
    #include "Adresse.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ffnen1Click(TObject *Sender)
    {
       FILE *fp1;
       char oneword[100];
       char *c;
    
    /* Datei oeffnen */
       OpenDialog1->Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
       OpenDialog1->Execute();
       fp1 = fopen(OpenDialog1->Files->Strings[0].c_str(), "r");
       if (fp1 == NULL)
       {
          ShowMessage ("Fehler beim Öffnen von:" + OpenDialog1->Files->Strings[0]);
       }
       else
       {
          fgets(oneword,100,fp1);
          Edit1->Text = oneword;
          fgets(oneword,100,fp1);
          Edit2->Text = oneword;
          fgets(oneword,100,fp1);
          Edit3->Text = oneword;
          fgets(oneword,100,fp1);
          Edit4->Text = oneword;
          fgets(oneword,100,fp1);
          Edit5->Text = oneword;
          fclose(fp1);
       }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Beenden1Click(TObject *Sender)
    {
    exit(0);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Speichern1Click(TObject *Sender)
    {
       FILE *fp1;
       char oneword[100];
       char *c;
    
    /* Datei oeffnen */
       SaveDialog1->Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
       SaveDialog1->Execute();
       fp1 = fopen(SaveDialog1->Files->Strings[0].c_str(), "w");
       if (fp1 == NULL)
       {
          ShowMessage ("Fehler beim Speichern von:" + SaveDialog1->Files->Strings[0]);
       }
       else
       {
          strcpy(oneword,(Edit1->Text+"\n").c_str());
          fputs(oneword,fp1);
          strcpy(oneword,(Edit2->Text+"\n").c_str());
          fputs(oneword,fp1);
          strcpy(oneword,(Edit3->Text+"\n").c_str());
          fputs(oneword,fp1);
          strcpy(oneword,(Edit4->Text+"\n").c_str());
          fputs(oneword,fp1);
          strcpy(oneword,(Edit5->Text+"\n").c_str());
          fputs(oneword,fp1);
          fclose(fp1);
       }
    
    }
    //---------------------------------------------------------------------------
    


  • Wenn du die Datei öffnest, steht der Lesezeiger automatisch am Dateianfang - wenn dir das nicht gefällt, mußt du ihn entsprechend weiterschieben (am schnellsten geht das per fseek()).

    PS: Übrigens ist es in C++ besser, mit fstream's zu arbeiten als mit FILE*'s.

    PPS: Und [cpp]-Tags sind manchmal praktischer als [quote] 😉


Anmelden zum Antworten