1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

VBA .NET Text in Datei speichern

Discussion in 'Programmieren' started by scullhead, Jun 25, 2009.

Thread Status:
Not open for further replies.
  1. scullhead

    scullhead Byte

    Hallo, Ich habe mal eine Frage zum Schreiben von Text in Dateien:

    Ich habe eine Anwendung mit Visual Studio 2005 geschrieben die unter Anderem die Funktion hat den Text aus einer RichTextBox als .txt Datei abzuspeichern. - Das klappt auch so weit ganz gut.

    Bisher habe ich den kompletten Text mit dem "write" befehl gespeichert. Das hatte den Nachteil, dass die Zeilenumbrüche nur aus einem LF (line feed) bestanden und z.B. in Notepad nicht korrekt angezeigt wurden.

    Daher bin ich dazu übergegangen den Text zeilenweise mittels "writeline" abzuspeichern. - Jetzt sind die Zeilenumbrüche korrekt: CR LF (carrigage return + line feed)

    Allerdings habe ich das Problem, dass am ende der Datei nun immer ein Zeilenumbruch zu viel ist wegen des writeline Befehls der diesen nach jeder Zeile anfügt.

    Meine Frage daher:
    Gibt es eine Möglichkeit in VBA.NET diesen letzten Zeilenumbruch zu unterbinden oder wieder aus der Datei zu entfernen?

    Hier mal der codeabschnitt der das Speichern bewerkstelligt:

    Code:
                    If dateiname = "" Then
                        MsgBox("Es wurde kein Dateiname angegeben." & vbNewLine & "Text wurde nicht gespeichert!", MsgBoxStyle.Critical)
                        Exit Sub
                    Else
                        Try
                            fso = CreateObject("Scripting.filesystemobject")
                            myfile = fso.opentextfile(dateiname, 2, True, 0)
                            'myfile.write(meintext)
                            index = 0
                            'Text zeilenweise in Datei schreiben
                            For index = 0 To linecount
                                myfile.writeline(mytextarray(index))
                            Next
                        Catch ex As Exception
                            MsgBox("Fehler beim Speichern der Datei!" & vbNewLine & _
                            "Datei wurde nicht gespeichert!" & vbNewLine & _
                             ex.Message, MsgBoxStyle.Critical)
                        Finally
                            myfile.close()
                            myfile = Nothing
                            fso = Nothing
                        End Try
                    End If
    
     
  2. VB-Coder

    VB-Coder Megabyte

    For index = 0 to linecount -1

    Das ist des Rätsels Lösung. Die For Schleife einfach einmal weniger durchlaufen lassen.
     
  3. scullhead

    scullhead Byte

    Nette Idee, leider funktioniert das nicht.
    Wenn ich den durchlauf um 1 verringere dann fehlt die letzte Zeile in der Datei.

    Es soll aber lediglich der letzte Zeilenumbruch entfernt werden, so dass beim öffnen der Datei z.B. mit Notepad der Cursor am Ende der letzten Zeile steht und nicht am anfang der nächsten

    :idee:
     
  4. VB-Coder

    VB-Coder Megabyte

    Nur eine Idee. Bin mir jetzt aber nicht sicher ob es funktioniert.
    Versuch doch mal statt mit writeline, mittels Print die Zeilen zu schreiben.
    Durch ein Symikolon am Ende sollte der letzte Zeilenumbruch verhindert werden.

    Also z.B. so:
    Code:
    Dim Dateinr As Integer
      Dateinr = FreeFile
      Open "Dein.txt" For Output As #Dateinr
        Print #Dateinr, Text1.Text;
      Close #Dateinr
    
    
     
Thread Status:
Not open for further replies.

Share This Page