Peinlich, aber ich hab gleich nochmal ne frage // anliegen
hab mein programm soweit fertig nurnoch paar kleinigkeiten.
aber woran ich bis jetzt scheitere:
Ich hab ne dropdown liste mit den Menüpunkten speichern // öffnen und hab es mit dem code versucht:
Private Sub SpeichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
SaveFileDialog1.Filter = "Textdokumente (.txt)|*.txt"
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
System.IO.File.WriteAllText(SaveFileDialog1.FileName, RichTextBox1.Text, System.Text.Encoding.Default)
End If
End Sub
Private Sub ÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripMenuItem.Click
OpenFileDialog1.Filter = "Textdokumente (.txt)|*.txt |RTF-Format (.rtf)|*.rtf|Alle Dateien|*.*"
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
RichTextBox1.Text = System.IO.File.ReadAllText(OpenFileDialog1.FileName)
End If
End Sub
aber es kommen nur fehlermeldungen und die komplette dropdown zeile fehlt.
kann mir jemand helfen und mir meinen fehler zeigen + vllt erklären wenn möglich oder ne alternativ lösung anbieten, wie ich die speichern // öffnen funktion hinkriege?
den code hab ich von jemanden übernommen der nen reines txt programm hatte, meins arbeitet aber auch mit variablen (diese gilt es eben zu speichern) könnte das vllt ein grund sein? weil der code für .txt ausgelegt ist?
bin einfach ratlos und hoffe auf hilfe
danke schonmal im voraus.
MfG
Frontline
Ergänzung vom 18.06.2012 22:43 Uhr: kennt den keiner die antwort? :/ wäre echt hilfreich das ist das letzte detail was fehlt für mein erstes kleines programm würd mich freun
MfG
Ergänzung vom 19.06.2012 07:53 Uhr: So ich hab jetzt mein Problem soweit im griff, das ich prinzipiell mal speichern kann was nen vortschritt ist
aber was noch nicht klappt:
ich hab mehrere textfelder, aber er speichert mir nur das was ich ihm als erstes gesagt hab.
Hier mal die Codezeilen:
Private Sub Speichern1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripMenuItem.Click
SaveFileDialog1.ShowDialog()
My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text, False)
End Sub
Private Sub ÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
Label1.Text = OpenFileDialog1.FileName
txt1.Text = My.Computer.FileSystem.ReadAllText(Label1.Text)
txt2.Text = My.Computer.FileSystem.ReadAllText(Label1.Text)
End Sub
hier der erste testlauf wo ich oben bei save nur txt1 drinnen hab (hier klar das er nur das speichern kann)
My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text, txt2.Text, False)
Hier hab ich den Roten teil eingefügt, in der hoffnung, das er mir das dan auch speichert, aber was natürlich auch nicht geklappt hat.
Beim öffnen zeigt er mir im textfeld txt1 und 2 den Inhalt von 1 an (was sich ja dadurch bedingt, das nur txt1 auf Label1 gespeichert wird und txt2 sich auch auf label1 stützt)
muss ich dan mehr labels einfügen oder wie geht das?
Hilfe nochmal bitte
Thema: Speichern // Öffnen Funktion
-
18.06.2012, 19:18 #1Newbie
- Dabei seit
- Jun 2012
- Beiträge
- 6
[VisualBasic] Speichern // Öffnen Funktion
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
19.06.2012, 09:09 #2
[VisualBasic] AW: Speichern // Öffnen Funktion
Ich kann dir nicht mehr ganz folgen, aber die Zeile ist doch Unsinn.
Die Funktion WriteAllText erwartet vorgegebene Parameter. Mit deiner Komma Anreihung kann daher kein Compiler was anfangen und das auch aus gutem Grund.
Im Tooltip zu WriteAllText sagt er ja auch extra was an welcher Stelle erwartet wird.
Willst du jetzt 2 Textboxen in einer Datei speichern, dann musst du mit Stringverknüpfung arbeiten
oder eben noch einen Zeilenumbruch einfügenCode:My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text & txt2.Text, False)
Code:My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text & vbcrlf & txt2.Text, False)
-
19.06.2012, 09:19 #3Ensign
- Dabei seit
- Apr 2008
- Beiträge
- 179
[VisualBasic] AW: Speichern // Öffnen Funktion
Hallo!
Deine Funktionen RadAllText und WriteAllText lesen und schreiben, wie der Name schon sagt, die gesamte Textdatei.
D.h. bei WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text, False) muss in txt1.Text schon alles drinnen stehen, was gespeichert werden soll. Deshalb wäre es besser, wenn du deine beiden Textfelder in einer Variable zusammenfügst und dann speichert.
Eine andere Möglichkeit wäre, zwei mal die Funktion aufzurufen und den Anfügen-Parameter auf true zu setzen:
WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text, False)
WriteAllText(SaveFileDialog1.FileName + ".txt", txt2.Text, True)
Beim Auslesen hast du das gleiche Problem, es wird dann die gesamte Textdatei ausgelesen. Da müsstest du dann erstmal irgendwie trennen, damit klar ist, welcher Inhalt in welche Textbox soll.
Wenn du mehrere Dinge speichern und Auslesen willst, solltest du vielleicht von Grund auf anders vorgehen. Dieses Tutorial erklärt das sehr gut:
http://www.vb-seminar.de/vb_38.htm
Viele Grüße,
lexoonGeändert von lexoon (19.06.2012 um 09:22 Uhr)
-
19.06.2012, 11:22 #4Newbie
Ersteller dieses Themas
- Dabei seit
- Jun 2012
- Beiträge
- 6
[VisualBasic] AW: Speichern // Öffnen Funktion
@ easy:
also das speichern funktioniert schonmal so wie du gesagt hast, aber wie kann ich das dan so öffnen, das jeder text in der ursprünglichen textbox steht.
so steht das was ich vorher in beide aufgeteilt habe beim wiederöffnen nur in einer box...
@ lexoon
muss ich mir angugen danke
-
19.06.2012, 12:57 #5
[VisualBasic] AW: Speichern // Öffnen Funktion
Wenn du 2 Werte speichern willst, dann musst du die natürlich irgendwie getrennt ablegen, um beim Öffnen zu erkennen was welcher Wert ist.
Ich hab jetzt mal zum Speichern meine vorher gepostet Methode mit dem Zeilenumbruch verwendet:
Code:SaveFileDialog1.ShowDialog() My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName + ".txt", txt1.Text & vbCrLf & txt2.Text, False)
Damit ist klar dass in Zeile 1 ein Wert steht und in Zeile 2 ein Wert steht.
Zum Einlesen dann:
Dim ArrayMyFile() dimensioniert ein dynamisches Array aus Strings.Code:OpenFileDialog1.ShowDialog() Label1.Text = OpenFileDialog1.FileName Dim ArrayMyFile() As String = Split(My.Computer.FileSystem.ReadAllText(Label1.Text), vbCrLf) Try txt1.Text = ArrayMyFile(0) txt2.Text = ArrayMyFile(1) Catch ex As IndexOutOfRangeException End Try
Split zerhackt mir den Inhalt der Textdatei und trennt am Zeilenumbruch (vbcrlf)
Try Catch End ist zum abfangen von Fehlern, wenn nur 1 oder kein Wert gespeichert war.Geändert von easy.2ci (19.06.2012 um 13:02 Uhr)
-
19.06.2012, 15:42 #6Newbie
Ersteller dieses Themas
- Dabei seit
- Jun 2012
- Beiträge
- 6
[VisualBasic] AW: Speichern // Öffnen Funktion
hab deinen code benutzt aber funktioniert nicht
es erscheint der text weder in txt1 noch txt2
klappts bei dir? woran liegts bzw. wo ist der unterschied?
MfG
Ergänzung vom 19.06.2012 15:47 Uhr: Bzw. was mir gerade aufällt, die Variablen sind nach dem Speichern und öffnen auch wieder weg, kann man das auch beheben? das Sich das Programm auch den Wert der Variablen mitspeichert // wieder öffnet?
MfG


Zitieren
