MsgBox ausgabe.

  • VB.NET

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

    MsgBox ausgabe.

    Hallo
    Danke an das Forum, super hier.
    Konte schon einige Probleme lösen mit diesem Forum.
    Nun stehe ich an, weil ich nicht genau weis wonach ich "googlen" soll.
    Ich habe ein Programm, dass Dateien in gewisse Ordner verschiebt.
    Alles was verschoben wird, wird in einer ListBox dargestellt.
    Nun habe ich ein Button(5) der die Daten wieder löscht nach dem Kopieren.
    Klappt alles wunderbar mit diesem Code:

    VB.NET-Quellcode

    1. Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    2. Dim i As Short
    3. i = 0
    4. For Each Items In ListBox2.Items
    5. Kill(My.Settings.expfad & Items)
    6. i = i + 1
    7. Next
    8. MsgBox(i & " Daten gelöscht")
    9. End Sub


    Dann kommt die Msg Box und gibt an wieviele Dateien gelöscht wurden.
    Gerne hätte ich aber wenn hier die Dateinamen stehen würden.

    Gibt dafür einen einfachen Befehl?

    For Each Items In ListBox2.Items
    Kill(My.Settings.expfad & Items)
    hier my.settings.expfad & items speichern und am schluss eine zusammenfassung ausgeben?

    Wisst ihr was ich meine? Eine art VB.Net Kurzzeithirn das sich alle my.settings.expfad & items merkt und ausgibt.

    MFG
    Schaue dir mal bitte folgendes an: erfinderdesrades.unitweb.de/Pr…/Blogs/WarumStrictOn.html &

    SeriTools schrieb:

    MsgBox() - .NET: System.Windows.Forms.MessageBox.Show() IMO: egal ob MessageBox oder MsgBox: schlecht von der Experience her. Also setzt man es ein, wo es selten gebraucht wird, und der Aufwand eines ordentlichen Dialoges auf später vertagt werden kann.
    Dieses Thema dürfte für dich sehr interessant sein, auch wegen Kill(): Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen

    LG :)

    Edit: Wenn Ich mal fragen darf: Wo hast du programmieren gelernt?

    Edit 2: Bevor Ich das wichtigste vergesse, hier die Lösung für dein Problem: msdn.microsoft.com/de-de/libra…o.fileinfo(v=vs.110).aspx

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

    Danke für die Antwort, schaue mir diesen Link mal an.
    Gelernt, haha hier aus dem Forum.
    Bin Konstrukteur und wir arbeiten mit einem 3D CAD System dort begann ich vor einem Jahr einige Makros zu erstellen.
    So kam ich dann auf VB.NET

    Nun um die Arbeit zu erleichtern habe ich mein eigenes Programm gemacht das viele Arbeitsabläufe automatisiert.
    Dateien Kopieren
    Projektmanagement
    Nummervergabe bei Zeichnungen usw...
    Mittlerweile ein Komplexes Programm:)
    Aber ja, ihr würdet die übelste kriese schieben wenn ihr diesen Code sehen würdet...

    EDIT1:
    Aha ist "kill" nicht die feine art? ja kann es auch mittels FileInfo machen, war nur zu Faul.
    Wird noch geändert.
    Der Link löst mein Problem aber nicht.
    Ich suche ein befehl für VB.Net der sich Sachen merkt und die dann wiedergeben kann.

    For Each Items In ListBox2.Items
    Mach etwas mit dem item
    merk dir das item
    next
    msgbox (item1, item2, item3, usw..)
    Wisst ihr was ich meine. Ich weiss nicht wie man dem sagt. (für mich eine art kurzzeitgedächtnis)
    EDIT2:
    Kill(My.Settings.expfad & Items) ersetzt durch My.Computer.FileSystem.DeleteFile(My.Settings.expfad & Items)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cydon“ ()

    sinnvoller wäre, eine List(Of FileInfo) zu führen, und noch sinnvoller vmtl. eine richtige Datenverarbeitung, aber egal.

    Also was du "Kurzzeitgedächtnis" nennst, ist eine Variable, und weil dein Kurzzeitgedächtnis mehrere Elemente merken soll, muss die Variabe vom Datentyp her eine Auflistung sein - etwa eine List(Of String)
    Gugge vlt. auch Grundlagen: Fachbegriffe

    Aber probierma so

    VB.NET-Quellcode

    1. Private Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click
    2. For Each itm In ListBox2.Items
    3. Kill(My.Settings.expfad & itm)
    4. Next
    5. Dim output = New List(Of String) From {"Folgende wurden gelöscht"}
    6. output.AddRange(ListBox2.Items.Cast(Of Object).Select(Function(o) o.ToString))
    7. MessageBox.Show(String.Join(Microsoft.VisualBasic.ControlChars.Lf, output))
    8. End Sub

    Salü
    Variablen kenne ich.
    Danke für den Link werde mich auch dort noch einlesen, schaden würde es nicht.

    Der Tipp mit List ofString genau danach habe ich gesucht, du bist mein Held :thumbsup:
    Ah der hammer....

    VB.NET-Quellcode

    1. Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    2. Dim waswurdegelöscht As New List(Of String) From {"Folgende wurden gelöscht"}
    3. For Each itm In ListBox2.Items
    4. My.Computer.FileSystem.DeleteFile(My.Settings.expfad & itm)
    5. waswurdegelöscht.Add(My.Settings.expfad & itm)
    6. Next
    7. MessageBox.Show(String.Join(Microsoft.VisualBasic.ControlChars.Lf, waswurdegelöscht))
    8. End Sub


    Kann geschlossen werden.
    @Cydon :
    Ein paar Feinheiten:

    1. My.Computer.FileSystem.DeleteFile -> System.IO.File.Delete
    Einfach, da man den My-Namespace vermeiden sollte (aus berechtigten Gründen)

    2. Microsoft.VisualBasic.ControlChars.Lf -> Environment.NewLine
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    ThePlexian schrieb:

    Microsoft.VisualBasic.ControlChars.Lf -> Environment.NewLine

    Ist nicht dasselbe.
    Environment.NewLine ist variabel:
    A string containing "\r\n" for non-Unix platforms, or a string containing "\n" for Unix platforms.
    Und wenn man konstant von Windows ausgeht, wäre es ein CrLf und kein Lf.

    Ist allerdings im obigen Kontext trotzdem einsetzbar.
    Ich wollte nur darauf hinweisen, dass man nicht generell von Gleichheit ausgehen kann
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Oder anstatt der List(of String) mit dem System.Text.StringBuilder, ist evtl einfacher. Beispiel: Visual Basic 2010 Textboxen in einem Textdokument
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Andy16823 schrieb:

    Bitte sehr, einfacher gehts denke ich nicht

    VB.NET-Quellcode

    1. Dim Builder As new System.Text.StringBuilder()
    2. Builder.AppendLine(Me.TextBoxX.Text)
    3. Builder.AppendLine(Me.TextBoxX.Text)
    4. Builder.AppendLine(Me.TextBoxX.Text)
    5. Builder.AppendLine(Me.TextBoxX.Text)
    6. Builder.AppendLine(Me.TextBoxX.Text)
    7. Builder.AppendLine(Me.TextBoxX.Text)
    8. System.IO.File.WriteAllText("C:\Test",Builder.ToString())
    Dasses einfacher nicht ginge, dem widerspreche ich doch gleich:

    VB.NET-Quellcode

    1. Dim textboxes = {TextBoxX, TextBoxX, TextBoxX, TextBoxX}
    2. File.WriteAllLines("C:\Test",textboxes.select(Function(tb) tb.Text))
    Stringbuilder ist zwar praktisch, aber meist stellt sich eine List(Of String), eine List(Of Object) oder auch nur ein String() als noch praktischer heraus.
    Hallo zusammen
    Vielen Dank für die Inputs.
    Genau danach habe ich gesucht kurz und knapper Code.
    Hat mir eine Menge Arbeit erspart.

    Coole Leute hier. Danke Danke....

    Wegen der "Sauberkeit" des Codes, für mich ist VB.Net mittel zum Zweck. Ich kann mir somit einiges an Arbeit ersparen, bin mir aber bewusst, dass vieles nicht perfekt ist. Danke euch für die Optimierung.


    Andy16823 schrieb:

    Bitte sehr, einfacher gehts denke ich nicht

    VB.NET-Quellcode

    1. ​Dim Builder As new System.Text.StringBuilder()
    2. Builder.AppendLine(Me.TextBoxX.Text)
    3. Builder.AppendLine(Me.TextBoxX.Text)
    4. Builder.AppendLine(Me.TextBoxX.Text)
    5. Builder.AppendLine(Me.TextBoxX.Text)
    6. Builder.AppendLine(Me.TextBoxX.Text)
    7. Builder.AppendLine(Me.TextBoxX.Text)
    8. System.IO.File.WriteAllText("C:\Test",Builder.ToString())


    Zu diesem Thema noch kurz. Hier wird die Datei immer neu überschrieben, gibt es eine EINFACHE Möglichkeit die Datei fortlaufend zu erweitern?
    Bitte, nicht vergessen dabei, der FileStream muss noch disposed werden. ^^
    Mach daher sowas:

    VB.NET-Quellcode

    1. Using fs As FileStream = File.Open("C:\Path...", FileMode.Append)
    2. fs.TuWas();
    3. End Using
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Im den Lerneffekt zu erhöhen, google mal nach MSDN und dem ObjektBrowser in VS.
    Du wirst schnell fündig werden, hier mal der Anfang: msdn.microsoft.com/de-de/libra…em.io.file(v=vs.110).aspx
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Jou.

    Cydon schrieb:

    gibt es eine EINFACHE Möglichkeit die Datei fortlaufend zu erweitern?
    Starte so:
    Bilder
    • Append.jpg

      20,62 kB, 1.050×108, 138 mal angesehen
    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!