ini-Datei Daten dynamisch weiterführen

esdesign

Grafikdesigner
Hallo,

ich bin immernoch dabei mein Anwesenheitsprogramm zu schreiben. Zur Grafischen Ansicht nehme ich Textdateien, zum Programm ini-Dateien.

Ich speicher also wenn ich auf nen Button klicke die Uhrzeit und die Sektion ist der Name der anwesenden Person. So weit so gut. Nun mache ich das gleiche beim Austragen: In die Sektion einen zweiten Schlüssel mit der zweiten Uhrzeit. Auch das klappt. Nun möchte ich aber wenn ich mich ein zweites mal eintrage, an einem Tag... Das er dann folgendes macht:

Code:
[Max Mustermann]
eingetragen = 18:09
ausgetragen = 19:07

so.... und jetzt trage ich mich also ein zweites mal ein...

Code:
[Max Mustermann]
eingetragen = 18:09
ausgetragen = 19:07
eingetragen2 = 20:08

das möchte ich aber dynamisch weiterführen... bedeutet wenn er sich jetzt wieder austrägt, dann steht da eintsprechend noch

Code:
ausgetragen2 = 21:07

und trage ich mich jetzt nochmal ein, dann steht da

Code:
eingetragen3 = 21:18

usw... Wie mache ich das, beim eintragen und natürlich auch beim austragen...

mein Code:

Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If ComboBox1.Text = "" Then
            MsgBox("Nichts drin")
        Else
            Dim pr As String
            pr = WertLesen(ComboBox1.Text, "Ausgetragen", PFAD)

            If pr = "" Then
                WertSchreiben(ComboBox1.Text, "Eingetragen", Format(Now, "HH:mm"), PFAD)
            Else
                WertSchreiben(ComboBox1.Text, "Eingetragen2", Format(Now, "HH:mm"), PFAD)
            End If
        End If
    End Sub

und beim austragen

Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim pr As String
        pr = WertLesen(ComboBox1.Text, "Ausgetragen", PFAD)

        Dim pr1 As String
        Dim pr2 As String
        pr1 = WertLesen(ComboBox1.Text, "Eingetragen", PFAD)

        If pr1 = "" And pr2 = "" Then
            MsgBox("Der Nutzer wurde noch nicht eingetragen")
        Else
            If pr = "" Then
                WertSchreiben(ComboBox1.Text, "Ausgetragen", Format(Now, "HH:mm"), PFAD)
                Dim sEingetragen As String
                sEingetragen = WertLesen(ComboBox1.Text, "Eingetragen", PFAD)

                Dim sAusgetragen As String
                sAusgetragen = WertLesen(ComboBox1.Text, "Ausgetragen", PFAD)

                Dim Eingetragen As TimeSpan = TimeSpan.Parse(sEingetragen)
                Dim Ausgetragen As TimeSpan = TimeSpan.Parse(sAusgetragen)

                ' Zeitdifferenz in Minuten berechnen
                Dim nMin As Integer = 0
                With Ausgetragen.Subtract(Eingetragen)
                    nMin = .Hours * 60 + .Minutes
                End With

                ' Ausgabe der Zeit-Differenz
                MsgBox("Die Differenz beträgt " & CStr(nMin) & " Minuten")

                Dim nStu As String
                nStu = nMin / 60

                WertSchreiben(ComboBox1.Text, "Gesamtstunden", nStu, PFAD)
            End If
 
Moin,

ich würde dir da prinzipiell empfehlen XML-Dateien zu verwenden. So kannst du proplemlos über DOM deine Datei erweitern und musst nicht in den Textdateien "von Hand" nach der richtigen Stelle suchen. Sowas wäre ziemlich leicht fehleranfällig und nur schwer erweiterbar, wenn du das einmal möchtest.

Mit XML-Dateien kannst du zum Beispiel an den entsprechenden Personenknoten ganz einfach ein Element <check id="2" ein="20:08" aus=""> anhängen (das 2. Mal an dem Tag eingetragen)

Beim Austragen brauchst du dann nur das Attribut "aus" des Knotens mit der letzten id zu setzen.

mfg LuigiEd
 
Hallo und vielen Dank!

Grundsätzlich wirst Du Recht haben. Aber ich habe noch nie mit xml-Dateien gearbeitet. Wie schreibe ich das da rein und wie lese ich es aus? Bei Ini-Dateien habe ich mir selber eine Funktion geschrieben zum eintragen und austragen.

Hätte da jemand eine Idee für eine Lösung über INI-Dateien. Ich werde mir aber auf jeden Fall mal die Lösung mit xml-Dateien anschauen!

Danke schonmal!
 
Hi Eike,

ini-Dateien sind eigentlich (wie der Name schon sagt) dazu gedachte einem Programm beim Starten (Initialisieren) Parameter mit zu geben.

Sicherlich kannst du dein Problem trotzdem auf diese Art lesen. Du müssest dazu die Datei öffnen, den gesamten Inhalt einlesen, dann die Stelle finden, an der du etwas hinzufügen willst und das dann tun.

Willst du alle Nutzer in EINER Datei abspeichern oder für jeden Nutzer eine seperate Datei anlegen?

Bei XML-Dateien hast du den Vorteil, dass es ein fertiges Modell (DOM) dafür gibt und .NET (sowie die meisten Programmiersprachen (-Frameworks) schon eine API dafür mitbringen. Des Weiteren ist es durch den Aufbau der XML-Dateien leichter die Stelle zu finden und zu erweitern, die du willst. Du musst dich also nicht mit solchen Low-Level-Sachen wie Stringverarbeitung und ähnlichem Rumärgern. ;)

Wenn du Syntaxfragen zu dem einen oder anderen hast, sag bescheid.

mfg
 
Zurück