kostenloser Webspace werbefrei: lima-city


[Visual Basic] Zeilenumbruch

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    a*****e

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Text1.text = eingabe & vbCrLf

    So müsste es gehen, habe schon seit etlichen Jahren nichtsmehr mit Visual Basic zutun.

    Gruß!
  4. 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
  5. ich würds auch so machen: gesamttext = text1 & vbcrlf & text2
  6. 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)
  7. Autor dieses Themas

    a*****e

    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
  8. 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
  9. Autor dieses Themas

    a*****e

    Multiline = true.

    Schrieb ich doch schon im Startbeitrag. Oder hab ich dich jetzt falsch verstanden?
  10. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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"
  11. Autor dieses Themas

    a*****e

    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
  12. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.


    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 =)
  13. Autor dieses Themas

    a*****e

    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
  14. 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
  15. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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.
  16. stimmt, ich hätte Line Input schreiben müssen. Den Code mit Line Input habe ich eh schon 100mal geschrieben.
  17. Autor dieses Themas

    a*****e

    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... :-(
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!