Per IO.File.WriteAllText; Filename = Variable

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Per IO.File.WriteAllText; Filename = Variable

    Tag,

    habe folgendes Problem:

    Ich will per IO.File.WriteAllText ein Textfile erstellen, was auch klappt. Wenn ich als den Filenamen jedoch eine Variable nehme, bleibt der Filename einfach leer...obwohl die Variable 100%ig Inhalt hat.
    Ich mache das folgendermaßen:

    VB.NET-Quellcode

    1. Public pfad As String = (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\" & nutzername & ".ini")
    2. IO.File.WriteAllText(pfad, kills_insgesamt & vbNewLine & nutzername)


    Wie gesagt, die Datei heißt dann einfach .ini.

    Oliver

    Oliv3r schrieb:

    VB.NET-Quellcode

    1. Public pfad As String = (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\" & nutzername & ".ini")
    2. IO.File.WriteAllText(pfad, kills_insgesamt & vbNewLine & nutzername)
    Was?

    Mach's mal so:

    VB.NET-Quellcode

    1. Dim Pfad As String = Environment.GetFolderPath(Environment.Specialfolder.ApplicationData) & "Oliv3r\" & nutzername & ".ini")
    2. IO.File.WriteAllText(Pfad, kills_insgesamt & ControlChars.CrLf & nutzername)


    BTW, Public kann man nur unter Public Class und über Subs etc. machen ...

    Und wenn das nicht klappt, mach mal wieder "\Oliv3r\" anstatt "Oliv3r\" :D

    Gredsoft schrieb:

    VB.NET-Quellcode

    1. Dim Pfad As String = Environment.GetFolderPath(Environment.Specialfolder.ApplicationData) & "Oliv3r\" & nutzername & ".ini")
    2. IO.File.WriteAllText(Pfad, kills_insgesamt & ControlChars.CrLf & nutzername)


    Und wenn das nicht klappt, mach mal wieder "\Oliv3r\" anstatt "Oliv3r\" :D
    Geht, nur mit dem \Oliv3r\. ;)
    Danke, aber funktioniert nicht. Die Datei wird jetzt nur als .ini abgespeichert. Obwohl ich die Form starte und mir in einer MsgBox anzeigen lasse, was der Inhalt ist, der richtige Inhalt da ist...

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

    offensüchtig ist deine Variable nutzername leer. Lass dir die ma nach Dim Pfad bla ausgeben. Ansonsten ist es klüger, Path.Combine zu benutzen, satt den aus Stringverknüpfungen zusammenzustöpseln.

    Fiel Fergügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    xtts02 schrieb:

    Wo definierst Du die Variable nutzername bzw. wo weist Du ihr einen Wert zu?
    In einer Form:

    VB.NET-Quellcode

    1. Level1.nutzername = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\nutzername.ini")


    Vatter schrieb:

    offensüchtig ist deine Variable nutzername leer. Lass dir die ma nach Dim Pfad bla ausgeben. Ansonsten ist es klüger, Path.Combine zu benutzen, satt den aus Stringverknüpfungen zusammenzustöpseln.
    Nein, ist nicht leer. Habe sie mir in einer MsgBox ausgeben lassen.

    xtts02 schrieb:

    Was denn nun? Level1.nutzername oder nur nutzername?
    Also, die nutzername ist in der Level1 Form deklariert. (als Public überm Sub)
    Und ich fülle die Variable in einer Form Username, dort kann ich nicht einfach username schreiben, sondern muss Level1.nutzername schreiben. Oder versteh' ich das falsch?

    Oliver
    Level1 bzw. Username sind die Namen der Forms und nicht unbedingt deren Instanzen. Deshalb ist deine Vorgehensweise von der Username-Form auf die Level-Form zuzugreifen kritisch zu sehen.
    Besser ist ein modaler Aufruf:

    VB.NET-Quellcode

    1. 'In UsernameForm
    2. Public nutzername as String
    3. 'In LevelForm
    4. Private lokalernutzername as String
    5. Sub UsernameDialogaufruf()
    6. 'Modaler Dialogaufruf der usernameform
    7. Using dlg as new UsernameForm
    8. If dlg.showdialog.result=DialogResult.OK Then
    9. lokalernutername=dlg.nutzername
    10. Else
    11. 'Der Dialog wurde abgebrochen
    12. End If
    13. End Using
    14. End Sub


    Damit soolte es besserer gehen
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    haiyyu schrieb:

    Steht in der nutzername.ini was drin?

    Ja, dort stehe der Nutzername drin. Der wird folgendermaßen reingeschrieben:

    VB.NET-Quellcode

    1. IO.File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\nutzername.ini", NutzernameText.Text)
    2. Level1.nutzername = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\nutzername.ini")


    @Vatter: dort bekomme ich, "result" ist kein Member von "System.Windows.Forms.DialogResult".

    Habs nun anders gelöst, folgendermaßen:

    VB.NET-Quellcode

    1. Dim nutzernameauslesenlvl1 As String = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\nutzername.ini")
    2. Dim Pfad As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Oliv3r\" & nutzernameauslesenlvl1 & ".ini"


    Trotzdem danke,
    Oliver

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

    Oliv3r schrieb:

    dort bekomme ich, "result" ist kein Member von "System.Windows.Forms.DialogResult".

    Teufel nochmal, wie kann ich auch erwarten, dass der TE mal selber nachdenkt. Sry, ich habs nur ausm Kopf geschrieben, aber hättest du auch nur den Bruchteil des Codes verstanden, hättstes einfach mal so probiert:

    VB.NET-Quellcode

    1. If dlg.showdialog=DialogResult.OK Then


    Aber naja, wozu testen...
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: