Daten in einer Datei speichern



  • Schau mal hier nach:
    http://www.cplusplus.com/reference/iostream/fstream/ (zum dateihandling)

    ansonsten wie asc schon sagte.



  • Sorry hatte bis Heute noch keine Zeit mich der Sache wieder anzunehmen.

    Also meine ersten Vorüberlegungen:

    4 Methoden:

    void dateiErstellen();             // Soll eine Datei Anlegen und Zeile x bis y mit Informationen zur Datei befüllen ab Zeile z kommen dann die Datensätze
    
    void inDateiSchreiben(int zeile);  // Soll in Zeile z meine meine daten speichern: "Sting1" "String2"... 
    
    int dateiAuslesen();               // Soll die Anzahl der Zeilen der Datei auslesen
    
    void ausDateiLesen(int zeile);     // Soll Zeile z auslesen
    

    Weitere Ansätze/Überlegeungen folgen



  • Willst du das wirklich so machen? Die Zeile lässt sich in einer Datei nicht so schnell bestimmen. Besonders wenn du einige Male hintereinander einzelne Zeilen einlesen willst, lohnt es sich vielleicht, die Datei-Zeilen in einem Container zu speichern.



  • Und eventuell solltest du irgendwo einen Dateistream übergeben, außer natürlich du hast die Funktionen in einer Klasse und dort einen private Member welcher der Stream ist.



  • ich hab hier einen in basic. vielleicht ist er einen blick wert, weil er brutal einfach programmiert ist und trotzdem weit besser ist als die meisten.

    dim shared deutsch as string
    dim shared englisch as string
    
    sub umkopieren
        open "lektion.tmp" for input as #1
        open "lektion.txt" for output as #2
        dim nummer as integer
        do
            line input #1 , deutsch
            line input #1 , englisch
            print #2 ,deutsch
            print #2 ,englisch
        loop while not eof(1)
        close #1
        close #2
    end sub
    
    sub speichernWennFalsch
        open "lektion.tmp" for output as #2
        print #2, deutsch
        print #2, englisch
        open "lektion.txt" for input as #1
        dim nummer as integer
        nummer=0
        do
            line input #1 , deutsch
            line input #1 , englisch
            nummer=nummer+1
            if nummer <> 6 then 
                print #2 ,deutsch
                print #2 ,englisch
            endif
        loop while not eof(1)
        close #1
        close #2
        umkopieren
    end sub
    
    sub speichernWennRichtig
        open "lektion.tmp" for output as #2
        open "lektion.txt" for input as #1
        dim nummer as integer
        dim franzoesisch as string
        dim spanisch as string
        nummer=0
        do
            line input #1 , franzoesisch
            line input #1 , spanisch
            nummer=nummer+1
            if nummer <> 6 then 
                print #2 ,franzoesisch
                print #2 ,spanisch
            endif
        loop while not eof(1)
        close #1
        print #2, deutsch
        print #2, englisch
        close #2
        umkopieren
    end sub
    
    sub vokabelAnzeigen
        open "lektion.txt" for input as #1
        dim nummer as integer
        nummer=0
        do
            line input #1 , deutsch
            line input #1 , englisch
            nummer=nummer+1
            if nummer = 6 then 
                print deutsch
                exit do
            endif
        loop while not eof(1)
        close #1
    end sub
    
    function zeichenEinlesen as string
        dim ESC as string = chr(27)
        dim zeichen as string
        do 
            zeichen=inkey
            if zeichen=ESC then
                end
            endif
        loop while zeichen=""
        return zeichen
    end function
    
    sub main
        dim LINKS as string = chr(255) + "K"
        dim RECHTS as string = chr(255) + "M"
        dim HOCH as string = chr(255) + "H"
        dim RUNTER as string = chr(255) + "P"
        do
            print "Frage:"
            vokabelAnzeigen
            print "RUNTER zum Weitermachen"
            dim taste as string
            do
                taste=zeicheneinlesen
            loop while taste <> RUNTER
            print englisch
            print "<-Falsch     Richtig->"
            do
                taste=zeicheneinlesen
                if taste=LINKS then
                    print "falsch"
                    speichernWennFalsch
                    exit do
                endif
                if taste=RECHTS then
                    print "richtig"
                    speichernWennRichtig
                    exit do
                endif
            loop
        loop
        sleep
    end sub
    
    main
    


  • Nexus schrieb:

    Willst du das wirklich so machen? Die Zeile lässt sich in einer Datei nicht so schnell bestimmen. Besonders wenn du einige Male hintereinander einzelne Zeilen einlesen willst, lohnt es sich vielleicht, die Datei-Zeilen in einem Container zu speichern.

    Ich muss leider zugeben, dass ich nicht weis was mit einem Container gemeint ist. Ich bin jetzt ca 2Monate dabei ab und zu ein wenig C++ zu lernen und habe auch schon ein paar Programme nach programmiert und soweit verstanden. Nur Container waren bis lang nicht dabei. Da C++ mein erster Versuch ist das programmieren zu erlernen kann ich auch auf keine Erfahrungen mit anderen Programmiersprachen zurück greifen.

    EDIT: Meinst du mit Container vielleicht sowas:

    Ganze Datei in einen String lesen und dann das ganze nachher irgedwie in mehre strings teilen?



  • Okay, dann sind Container vielleicht nicht so wichtig. Es ist einfach relativ mühsam, nur eine bestimmte Zeile aus einer Datei auszulesen. Wenn es dir nur um die Übung geht, ist das okay, aber nicht dass du dir das angewöhnst. 😉

    Container sind Objekte, die mehrere Elemente vom gleichen Typ speichern können. Also ähnlich wie Arrays, aber viel komfortabler und flexibler. Wahrscheinlich wirst du die schon noch genug früh kennen lernen. 🙂



  • Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.
    Beispiele:
    http://www.cplusplus.com/reference/stl/

    Edit:Hab mal das verwirrende "Nee" rausgenommen 🙂



  • Firefighter schrieb:

    Nee Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.

    Und inwiefern widerspricht das meiner Beschreibung (mal abgesehen davon, dass er sich unter deiner Aussage wahrscheinlich nicht viel vorstellen kann)?



  • Nexus schrieb:

    Firefighter schrieb:

    Nee Container sind Datenstrutkuren zur speicherung von bestimmten Daten in einer bestimten Struktur.

    Und inwiefern widerspricht das meiner Beschreibung (mal abgesehen davon, dass er sich unter deiner Aussage wahrscheinlich nicht viel vorstellen kann)?

    Hab ich je gesagt das ich dir widerspreche? Ich hatte nur mal wieder zu spät gepostet 😃 und deins überlesen :p



  • Ah, dann habe ich das "Nee" falsch interpretiert. Sorry für die Unterstellung. 🙂


Anmelden zum Antworten