Daten in Textdatei schreiben

  • VB.NET

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

    Daten in Textdatei schreiben

    Hi VB-P,
    ich habe folgendes Problem:
    Ich muss die Namen aller Controls auf meiner Form (alle Controls außer labels) in eine Textdatei schreiben.
    Die Werte sollen so in meine Textdatei geschrieben werden.


    NameDesProgramms; NameDesControls; HinweisAufDenDatentyp (Bsp. Checkbox wäre hier B für bool)
    Beispiel:
    Form1; Checkbox1; B


    Habe mir das jetzt so gedacht, dass ich eine foreach schleife nehme und damit die Controls auslese. In C# hätte ich es so gemacht:
    foreach(Control c in this.Controls)

    Weis aber nicht, wie ich das in VB am besten und sinnigsten machen kann.

    Dann kenne ich mich leider mit dem Streamwriter in VB.NET noch nicht so gut aus. Er soll die oben genannte Zeile immer unter die letzte Zeile in der Datei schreiben.

    Wär nett, wenn jemand ne gute Idee hätte :thumbup:



    Edit:
    Die foreach hab ich jetzt so:

    VB.NET-Quellcode

    1. For Each c As Control In Me.Controls
    2. My.Computer.FileSystem.WriteAllText("Controls.txt", c.Name, True)
    3. Next



    Danke im Voraus.

    Grüße,
    aetium
    Warum programmierst Du nicht in C#? :D

    VB.NET-Quellcode

    1. Dim path As String = ""
    2. Dim dd As Double = 12.34
    3. Using sr As New System.IO.StreamWriter(path, False, System.Text.Encoding.Default)
    4. sr.WriteLine("Name")
    5. sr.WriteLine(13)
    6. sr.WriteLine(dd)
    7. End Using
    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!
    Mit C# wär das absolut kein Problem :D
    Nur mache VB noch nicht solange und hab deshalb hier noch nich das absolute know-how. Und brauchs für VB.NET^^

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

    Okay danke erstmal ;). Ich sehe gerade selbst, dass ichs ganz gut hinbekomme.. Stand nur gerade unter Zeitdruck -> Forum. Sorry.

    btw: Gibt es eine Möglichkeit, den Datentypen eines Controls rauszubekommen (c.GetType()) ?
    Und hast du vielleicht eine Idee, wie ich es erreichen kann, dass die Label nicht mit reingenommen werden?
    Denn das mit den Labels bereitet mir noch ein Problem.

    EDIT: Okay, getTyp gibt mir den Typen des Controls.

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

    Hey,

    aetium schrieb:

    Und hast du vielleicht eine Idee, wie ich es erreichen kann, dass die Label nicht mit reingenommen werden?

    also es sollen alle Controls auf der Form berücksichtigt werden außer den Labels? Dann würde ich auf die schnelle folgendes vorschlagen:

    VB.NET-Quellcode

    1. For Each _controls As Control In Me.Controls
    2. ' Labels ignorieren...
    3. If Not TypeOf _controls Is Label Then
    4. ' ... und mit den anderen was machen
    5. End If
    6. Next

    Den Datentyp + weitere Informationen kannst du via "_controls.GetType()" ermitteln.

    Gruß, Manschula

    Manschula schrieb:

    Visual Basic Quellcode
    For Each _controls As Control In Me.Controls
    ' Labels ignorieren...
    If Not TypeOf _controls Is Label Then
    ' ... und mit den anderen was machen
    End If
    Next


    Danke dir :thumbup:
    Man kennt das ja, mit den Wald und Bäumen undso ... :pinch:

    Habs fertig, somit danke euch allen
    -> /Erledigt

    btw: gz zu 1000 posts
    Falls jemand mal ein ähnliches Problem / Anliegen hat, hier nochmal der fertige Code:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    4. ReadAllControls()
    5. End Sub
    6. Private Sub ReadAllControls()
    7. For Each c As Control In Me.Controls
    8. ' Labels werden ignoriert
    9. If Not TypeOf c Is Label Then
    10. Using sr As New System.IO.StreamWriter("Controls.txt", True, System.Text.Encoding.Default)
    11. sr.WriteLine("Name des Programms; " & c.Name & "; " & c.GetType().ToString())
    12. End Using
    13. End If
    14. 'Nur Labels werden in separate Datei geschrieben
    15. If TypeOf c Is Label Then
    16. Using sr As New System.IO.StreamWriter("Labels.txt", True, System.Text.Encoding.Default)
    17. sr.WriteLine("Name des Programms; " & c.Name & "; " & c.GetType().ToString())
    18. End Using
    19. End If
    20. Next
    21. End Sub
    22. End Class
    Ein Dank dafür, dass Du den fertigen Code noch mal gepostet hast. :thumbsup: :thumbsup: :thumbsup:
    Nun kannst Du diesen Thread auch schließen.
    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!