Fehler im FileSaveDialog

HeikoT

Grünschnabel
*RESOLVED* Fehler im FileSaveDialog

Hallo zusammen,

heute mal der gute alte FileSaveDialog! Ich habe folgenden Private Sub für meinen FileSaveDialog, welcher jedoch nicht funktioniert.

Hier der Code:
Code:
    Private Overloads Sub SaveDoc()
        Dim sCurrentFile As String
        Dim sNewFileName As String
        Dim swOutput As IO.TextWriter

        sNewFileName = sCurrentFile

        With dlgSave
            .FileName = sCurrentFile
            .CheckFileExists = False
            .CheckPathExists = True
            .DefaultExt = "txt"
            .Filter = "Text-Dateien (*.txt)|*.txt"
            .AddExtension = True
            .InitialDirectory = IO.Path.GetDirectoryName(sNewFileName)
            .OverwritePrompt = False
            .CreatePrompt = False

            If .ShowDialog() = DialogResult.OK Then
                sNewFileName = .FileName
                swOutput.Close()
                sCurrentFile = sNewFileName
            End If
        End With
    End Sub
Beim speichern der Text-Datei kommt es nun zu folgendem Fehler:

'System.NullReferenceException'
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Beim Debuggen wird dann auf die Zeile

swOutput.Close()

verwiesen.

Was mache ich falsch?

Vielen Dank
 
Zuletzt bearbeitet:

Dario Linsky

Erfahrenes Mitglied
Logisch, dass da eine NullPointerException rauskommt. Du versuchst ja auch auf ein nicht erstelltes Objekt zuzugreifen. ;)
Bevor Du eine Methode aus dem TextWriter nutzen kannst, muss der TextWriter erstmal vernünftig initialisiert werden.
 

HeikoT

Grünschnabel
Sorry, aber der Beitrag war sowieso falsch, da ich den falschen Code reinkopiert habe.

Das Problem mit dem Speichern hab ich jetzt im Griff, aber das nächste Problem ist natürlich nie weit. Jetzt sieht es so aus, dass ich zwar meine Textdateien speichern kann, doch ein Zeilenumbruch mittels ENTER-Taste in meiner RichTextBox erzeugt Müll in der zu speichernden Datei.

Soll heißen, dass ich für jeden Zeilenumbruch ein Viereck in meiner Textdatei vorfinde.

Ich habe jetzt probiert das Problem mit folgender Funktion zu beheben:

Private Sub RichTextBoxName_KeyPress(ByVal keyascii As Integer)
If keyascii = vbCr Then
keyascii = vbCrLf
End If
End Sub

Hat natürlich nicht funktioniert. Die folgende Funktion auch nicht.

Private Sub FormName_KeyPress(ByVal keyascii As Integer)
If keyascii = vbCr Then
keyascii = vbCrLf
End If
End Sub

Kann mir dabei jemand helfen.
Ich habe auch noch irgendetwas mit IMPORT ASCII oder so im Hinterkopf.

Danke schonmal im Vorraus
 

Bencher

Mitglied
Ich mache es so und ich habe kein Problem beim Zeilenumbruch:

SaveFileDialog1.Filter() = "Text-Datei (*.txt) | *.txt"
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
Me.RichTextBox1.SaveFile(Me.SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
End If

Es kommt glaub ich drauf an was du bei .PlainText nimmst, da gibt es ja noch andere Auswahlmöglichkeiten.