Dateien in einem Ordner auf "Anwesenheit" prüfen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Dateien in einem Ordner auf "Anwesenheit" prüfen

    Salut!

    Ich möchte ein Programm erstellen, welches beim starten des Programmes, alle Dateien in einem von mir festgelegten Ordner prüft.

    Ein Label soll anzeigen, welche Datei gerade geprüft wird - und die Progressbar den Fortschritt.

    Habe in Google nicht gefunden, bitte um Hilfe!!

    Screen: (Zur Assoziation!)

    Gruß!
    Was genau möchtest du dazu nun wissen?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Was genau möchtest du dazu nun wissen?

    Alles ^^ Also ich möchte wissen, wie ich den Code so schreiben kann, dass er:

    Alle Dateien in einem Ordner prüft (Von mir festgelegte Datein!)
    In einem Label anzeigt, welche Datei gerade geptüft wird!
    In einer Progressbar anzeigt, wie weit der Fortschritt ist.

    Wenn eine Datei nicht gefunden ist soll eine MsgBox kommen

    VB.NET-Quellcode

    1. 'Hier der Code für das andere
    2. If not Datei gefunden
    3. MsgBox("Nicht gefunden!")


    Mit If not Datei gefunden ist nur zur übersicht!

    Gruß
    Prüfen heißt doch, dass Du weißt, welch Dateien alles da sein müssen.
    Pack die Dir in eine List(Of String) oder als StringList (oder so) in die Ressourcen oder wie auch immer, jedenfalls kannst Du diese Liste einfach durchchecken:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Check(files As List(Of String), verzeichnis As String)
    2. For Each file In files
    3. If Not System.IO.File.Exists(verzeichnis & file) Then
    4. Throw New System.IO.FileNotFoundException(file)
    5. End If
    6. Next
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was noch interessant wäre... Du schreibst... Dateien die du festgelegt hast...

    Wo?
    Willst du die stumpf im Programm hinterlegen und jedes mal, wenn sich da was ändert, das Programm neu schreiben müssen?
    Willst du sie in eine Text-Datei schreiben? Welche dann durchlaufen wird?
    Willst du sie in einer Datenbank speichern?

    Wenn du das weißt...
    Müsstest du dich mit Schleifen beschäftigen... (Wenn du das noch nicht kannst).

    Das Abfragen, ob ne Datei existiert ist an sich ja nur nen Einzeiler...

    VB.NET-Quellcode

    1. Dim Datei As String = "C:\Test.cfg"
    2. If System.IO.File.Exists(Datei) = False Then MessageBox.Show(Datei & " existiert nicht.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)


    Auch das erhöhen vom Wert einer Progressbar ist net wild...

    VB.NET-Quellcode

    1. Progressbar1.Maximum = 15 'hiermit hast du festgelegt, dass die Progressbar in 15 Schritten erhöhen kannst. Hier wäre es Sinnvoll die Anzahl der Dateien zu verwenden
    2. Progressbar1.Increment(1) 'hiermit erhöhst du den angezeigen wert um 1. Sollte dann einfach nach jeder Datei die geprüft wurde erhöht werden.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Was noch interessant wäre... Du schreibst... Dateien die du festgelegt hast...

    Wo?
    Willst du die stumpf im Programm hinterlegen und jedes mal, wenn sich da was ändert, das Programm neu schreiben müssen?
    Willst du sie in eine Text-Datei schreiben? Welche dann durchlaufen wird?
    Willst du sie in einer Datenbank speichern?

    Wenn du das weißt...
    Müsstest du dich mit Schleifen beschäftigen... (Wenn du das noch nicht kannst).

    Das Abfragen, ob ne Datei existiert ist an sich ja nur nen Einzeiler...

    VB.NET-Quellcode

    1. Dim Datei As String = "C:\Test.cfg"
    2. If System.IO.File.Exists(Datei) = False Then MessageBox.Show(Datei & " existiert nicht.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)


    Auch das erhöhen vom Wert einer Progressbar ist net wild...

    VB.NET-Quellcode

    1. Progressbar1.Maximum = 15 'hiermit hast du festgelegt, dass die Progressbar in 15 Schritten erhöhen kannst. Hier wäre es Sinnvoll die Anzahl der Dateien zu verwenden
    2. Progressbar1.Increment(1) 'hiermit erhöhst du den angezeigen wert um 1. Sollte dann einfach nach jeder Datei die geprüft wurde erhöht werden.
    Das klingt doch schonmal gut 8o
    Das mit einer Textdatei wäre natürlich am einfachsten!
    Wie müsste ich das dann machen? Also mit der Textdatei?

    Gruß!
    Naja wenn du sowas aus ner Textdatei auslesen willst,

    schau dir mal System.IO.Streamreader an.
    Da müsste in der Hilfe sogar nen Beispiel sein, was jede Zeile einer Textdatei durchgeht und in der Console schreibt.

    Das kannst du dann ja abwandeln und statt des Schreibbefehls für die Console ein File.Exist machen ;)

    Ein Streamreader nimmt sich ne Textdatei und liest diese stupide von oben nach unten durch.. Entweder als ganzes oder in deinem Fall, sinnvollerweise, Zeile für Zeile.
    Sprich: Jede Datei die geprüft werden soll in einer eigenen Zeile untereinander...
    Ich stimme dem Erfinder aber zu, dass du keine Progressbar brauchst. Denn das Programm rödelt so extrem schnell über so ne Liste, das kann kein Mensch sehen.

    Ich würde sogar vorschlagen, du schreibst ne Log-Datei in der du einfach auswerfen lässt, welche Dateien nicht gefunden werden (falls denne eine nicht gefunden wird).
    Hierzu kannst du noch ne Variable hochzählen lassen und wenn diese > 0 dann am Ende ne Messagebox nach dem Motte "Es wurde 23 Dateien nicht gefunden. Möchten Sie die Logdatei öffnen?"

    Um ne Logdatei zu schreiben kannst du dir das Gegenstück vom StreamReader anschauen... Den StreamWriter... Funktioniert identisch, schreibt nur statt zu lesen ;)
    Und wenn du ne Log-Datei öffnen willst, schau dir mal Process.Start an.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MemoAnMichSelbst“ ()

    Programmed schrieb:

    Wie müsste ich das dann machen? Also mit der Textdatei?

    VB.NET-Quellcode

    1. Dim files() As String = System.IO.File.ReadAllLines(DEINE_DATEI)
    und das Array übergibst Du statt der List(Of String) der Prozedur in meinem Beispiel.
    Sinnvoll isses, den Pfad gesondert zu behandeln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!