[Visual Basic] Zeilenumbruch
lima-city → Forum → Programmiersprachen → Basic
basic
beispiel
beitrag
boxen
datei
dateiname
facharbeit
inhalt
lade
letzte zeile
not
speicher
steuerelement
streichen
test
textdatei
vokabel
zeile
zeilenumbruch
zutun
-
Huhu,
ich habe ein Problem mit Visual Basic. Ich bin noch nicht wirklich fortgeschritten mit dieser Programmiersprache, aber stehe nun vor meinem ersten Problem. Ich möchte, dass wenn ich ein Textfeld, nen wir es txteingabe, etwas eingebe, und dann auf den ComandButton drücke, der eingegebene Text, in hm.. nennen wir es txtausgabe, erscheint und ein Zeilenumbruch, so dass ich beim nächsten mal, wenn ich in txteingabe etwas eingebe, txtausgabe in etwa so habe:
Text 1
Text 2
Das Problem ist, dass es nicht klappt. Google durchsucht, alles mögliche probiert, /n, vbNewLin, chr$(13) etc. hat nichts funktioniert.
txtausgabe hat MultiLine = true
Ich habe auch schon die Forensuche benutzt, aber nichts gefunden, was mir helfen könnte.
mfg,
Xalvi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Text1.text = eingabe & vbCrLf
So müsste es gehen, habe schon seit etlichen Jahren nichtsmehr mit Visual Basic zutun.
Gruß! -
Also du erstellst drei steuerelemente:
'1.Steuerelement (TextBox)
Name: txteingabe
'2.Steuerelement (TextBox)
Name: txtausgabe
'3.Steuerelement (Button)
Name: CommandButton
Private Sub CommandButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandButton.Click txtausgabe = txtausgabe & chr(10) & txteingabe 'fuegt txtausgabe zuerst eine neue Zeile und dann den eingegebenen Text hinzu txteingabe = "" 'txteingabe leeren End Sub
Beitrag geändert: 22.10.2007 20:03:04 von lccserver -
ich würds auch so machen: gesamttext = text1 & vbcrlf & text2
-
Naja, ich habe aber mit:
txtausgabe = txtausgabe & chr(10) & txteingabe
Den eingegebenen Text zur TextBox (txtausgabe) HINZUGEFUEGT und nicht ersetzt.
-->> ähnlich wie bei RichTextBox.AppendText(txteingabe) -
Funktioniert, wie lccserver es gesagt hat, nur leider hab ich jetzt so öde Striche, die in der Textdatei als Kästchen angezeigt werden. Macht das was? Kann man die ignorieren, oder umgehen?
mfg,
Xalvi -
bei der text box musst du mult-line eingeben, damit die text box eben mehr als nur eine zeile anzeigen kann. die zwei striche geben an, dass dort ein zeilenumbruch wäre
Beitrag geändert: 22.10.2007 20:39:24 von merde4 -
Multiline = true.
Schrieb ich doch schon im Startbeitrag. Oder hab ich dich jetzt falsch verstanden? -
Also ich verwend vbNewLine, weil ein Zeilenumbruch eigentlich aus Chr(10) und Chr(13) besteht und somit beides gleich kombiniert ist.
Me.TextBox1.MultiLine = True
Me.TextBox1.WordWrap = True
Me.TextBox1.Text = "1. Zeile" & vbNewLine & "2. Zeile"
-
Hat sich erledigt. Danke.
Neues Problem:
Wenn ich eine .txt Datei lade, in der ich in die Zeilenumbrüche habe, dann ist nur die letzte Zeile sichtbar. Was tun? :)
So lade ich die .txt Datei:
Private Sub cmdload_Click() dateiname = File1.Path & "\" & File1.FileName Open dateiname For Input As #1 While Not EOF(1) Input #1, vokabeln txtengvoc.Text = vokabeln Wend Close #1 End Sub
Beitrag geändert: 22.10.2007 22:29:03 von arthune -
Neues Problem:
Wenn ich eine .txt Datei lade, in der ich in die Zeilenumbrüche habe, dann ist nur die letzte Zeile sichtbar. Was tun? :)
So lade ich die .txt Datei:
Private Sub cmdload_Click() dateiname = File1.Path & "\" & File1.FileName Open dateiname For Input As #1 While Not EOF(1) Input #1, vokabeln txtengvoc.Text = vokabeln Wend Close #1 End Sub
Würdest du deinen Code einmal genauer durchlesen, entdeckt man den Fehler schon.
Denn "txtengvoc.Text = vokabeln" weist der TextBox immer nur die gerade eingelesenen Zeichen zu, wobei der alte Inhalt überschrieben wird.
Dim Dateiname As String Dim Vokabeln As String Dateiname = File1.Path & "\" & File1.FileName Open Dateiname For Input As #1 While Not EOF(1) Input #1, Vokabeln Me.Text1.Text = Me.Text1.Text & Vokabeln Wend Close #1
Und schon klappts =) -
Okay. Das klappt schon mal. Nun wird das nicht mit Zeilenumbrüchen geladen. Damm, ist das kompleziert. ;)
Und noch ein Problem:
Ich speichere beim speichern die Zahl mit, die der Index meines Arrays hat, damit ich nach dem beenden des Programms weitermachen könnte.
Mein Text dafür sieht so aus:
dateinameinx = File1.Path & "\" & File1.FileName
Open dateinameinx For Input As #3
While Not EOF(3)
Input #3, inx
zahl = inx
Wend
Close #3
End Sub
Funktioniert super super gut, echt klasse. Nicht.
Beitrag geändert: 23.10.2007 15:52:12 von arthune -
Also ich würde das so machen:
Dim Dateiname As String Dim Vokabeln As String Dateiname = File1.Path & "\" & File1.FileName Open Dateiname For Input As #1 While Not EOF(1) Input #1, Vokabeln Me.Text1.Text = Me.Text1.Text & vbCrLf & Vokabeln Wend Close #1
bzw:
Dim Dateiname As String Dim Vokabeln As String Dim arrayindex As Integer Dim array(100) As String Dateiname = File1.Path & "\" & File1.FileName Open Dateiname For Input As #1 While Not EOF(1) Input #1, Vokabeln array(arrayindex) = Vokabeln arrayindex = arrayindex + 1 Wend Close #1
Beitrag geändert: 24.10.2007 18:54:50 von merde4 -
Der von merde4 gepostete Code würde auch nicht richtig funktionieren, denn man muss wissen, wie die Input# Funktion arbeitet: Es wird nämlich jedes Zeichen einzeln eingelesen, also jeder Buchstabe und jede Ziffer nacheinander. Deshalb müssen also zuerst alles einlesen und können im Nachhinein den Text, den wir als String eingelesen haben, z.B. in eine Zahl umwandeln oder aufteilen etc.
Hier ein Beispiel zum Einlesen einer Datei:
Sub Datei_lesen() Dim Dateinummer As Integer Dim Inhalt As String Dim Dateiname As String Dateiname = "C:\Test.txt" Dateinummer = FreeFile Open Dateiname For Input Access Read Lock Read Write As #Dateinummer Do While Not EOF(Dateinummer) Inhalt = Inhalt & Input(1, #Dateinummer) MsgBox Inhalt Loop Close #Dateinummer Me.txtInhalt.Text = Inhalt End Sub
Und hier ein Beispiel, um eine Datei zu speichern:
Sub Datei_speichern() Dim Dateinummer As Integer Dim Inhalt As String Dim Dateiname As String Inhalt = "Dieser Text wird in die Datei geschrieben, " & vbNewLine & "sogar mit Zeilenumbruch. " Inhalt = Inhalt & vbNewLine & Me.txtInhalt.Text & vbNewLine Dateiname = "C:\Test.txt" Dateinummer = FreeFile Open Dateiname For Output Access Write Lock Read Write As #Dateinummer Print #Dateinummer, Inhalt Close #Dateinummer End Sub
Diese beiden Prozeduren sind im Vergleich zu deinen etwas optimiert.
Wenn du Text in Zahl umwandeln willst, kannst du mit IsNumeric() überprüfen, ob es eine gültige Zahl ist und mit CDbl(), CInt() usw. den Text umwandlen. -
stimmt, ich hätte Line Input schreiben müssen. Den Code mit Line Input habe ich eh schon 100mal geschrieben.
-
Also, ganz ehrlich: Ich blick da nicht durch, und bin gerade mehr oder wenige am verzweifeln...
Das Problem ist, so schön euer Code auch sein mag, dass Projekt ist für eine Facharbeit. Und ich kann nicht einfach jeden x-beliebigen, nie gelernten Befehl verweden. Natürlich kann ich das ein oder andere mal was aus dem Internet einbauen, aber naja, ich denke ihr wisst was ich meine?
Also, was kann ich an meinem Code verwenden, dass er schlicht funktioniert? Wenn ich zahl als String deklariere funktioniert zahl+1 verständlicherweise nicht mehr...
Freitag ist leider schon Abgabetermin... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage