BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB - Frage Textverabeiten » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Textverabeiten
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Textverabeiten       Zum Anfang der Seite springen

Hi ich möchte ein programm schreiben wo ein user eine Texteingabe machen kann mit beliebiger mänge. Das Prog soll dann nach immer ca 40 Zeichen eine Zeilen umbruch setzen und dies dann in einer txtdatei speichert

beispiel

Ganz viel langer txt sage mal hier ist das 40 zeichen bla bla

text.txt
Ganz viel langer txt sage mal hier ist das 40
zeichen bla bla

hoffe mir kann einer helfen danke schon mal

cu

Kilone

__________________
Klick mich fest
23.06.2004 17:46 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
*.rar
Junior Member


images/avatars/avatar-1302.gif

Dabei seit: 13.10.2003
Beiträge: 103
Herkunft: Rarlabs

      Zum Anfang der Seite springen

Ich gehe jetzt mal von Visual Basic dot NET aus.

Realisieren würde ich die Form so:

Eine Textbox mit einer deckungsgleichen Schriftart (zum Beispiel Courier New), damit du die Textbox so breit ziehen kannst, das die Benutzereingabe für eine Zeile immer 40 Zeichen hat. Dann sparst du dir das Speichern nach 40 Zeilen im Quellcode.

Den Dateizugriff würde ich so realisieren:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Imports System.IO (ganz oben)

Dim Datei As String = "C:\Textdatei.txt"
Dim fs as Filestream = File.OpenWrite(Datei)
Dim sw As New StreamWriter(fs)


sw.Write(Textbox1.Text)

sw.close


Alternativ kannst du dann auch den Dateinamen mit einem SaveFileDialog festlegen. Das ist dann so ein "Speichern unter..."-Dialog, wie du ihn aus jeder Microsoft Anwendung kennst. Wäre nur etwas komfortabler.

Falls du mit dem Beispiel aus .NET nichts anfangen kannst, hätte es nicht geschadet deine VB Version anzugeben Augenzwinkern

Generell einfach mal alle Infos für die FileStream Klasse suchen, die du finden kannst. Da ist alles mit Dateizugriffen drin. Lässt sich sehr komfortabel mit arbeiten (File.Create(Dateiname), File.Delete(Dateiname), File.Exists(Dateiname), File.Copy(Quelldatei, Zieldatei)).

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von *.rar: 23.06.2004 18:08.

23.06.2004 18:06 *.rar ist offline E-Mail an *.rar senden Beiträge von *.rar suchen
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Themenstarter Thema begonnen von kilone
      Zum Anfang der Seite springen

na dann schon mal besten DANK für deine hielfe, habe Visual Basic 6.o unglücklich leider noch ne alte Version aber ich hoffe das es damit genau so geht.

EDIT:
Hab das mal grade versucht. also hab der Box die Größe von diesen 40 Zeilen gegeben doch schreibt man dann nach rechts weiter. anstat die zeile zu wechseln. wie kann ich das begrenzen und den user ne Zeile tiefer schiecjen bei VB6.0 ?

__________________
Klick mich fest

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von kilone: 23.06.2004 19:15.

23.06.2004 18:52 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

willst du genau nach dem 40sten Zeichen umbrechen, oder dann ab dem letzten Leerzeichen?

Du musst, wenn du die Zeilen speichern willst, das umbrechen per code realisieren. Denn das automatische Umbrechen in einer Textbox beeinflusst den String, der in der Textbox steht nicht, dh du weißt beim Schreiben in die Datei nicht, wo umgebrochen wurde.

Versuchs mal so

code:
1:
2:
3:
4:
5:
6:
7:
function umbrechen(byval eingabe as string) as string
    dim ausgabe as string
    for i = 1 To len(eingabe) Step 40
        ausgabe = ausgabe & Mid(eingabe, i, 40) & vbnewline
    next i
    umbrechen=left(ausgabe, len(ausgabe)-2) 'Ohne die letzten beiden Zeichen, damit das letzte Umschalten weggelassen wird.
end sub


__________________
Grüßle, Medi

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Medusa: 23.06.2004 23:07.

23.06.2004 19:47 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Themenstarter Thema begonnen von kilone
      Zum Anfang der Seite springen

naja wenn sich das mit dem leerzeich auch realisieren lässte ist das natürlich besser Augenzwinkern

__________________
Klick mich fest

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von kilone: 23.06.2004 19:53.

23.06.2004 19:52 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

Ich habs mit ein paar Versuchen erfolgreich getestet, kann aber net 100% sagen, ob's funktioniert. Wahrscheinlich sehr unelegant geschrieben
Die Funktion zum Umbrechen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
Function Umbrechen(ByVal strEingabe As String, byval intLen as integer) As String
Dim ExitFor As Boolean
Dim strAusgabe As String
Dim c As Integer, i As Integer
strAusgabe = strEingabe
Do
    ExitFor = False
    For i = 1 To Len(strAusgabe)
        If Mid(strAusgabe, i, 2) = vbNewLine Then c = 0: i = i + 1 Else c = c + 1
        If c = intLen+1 Then
            For j = i To i -intLen Step -1
                If Mid(strAusgabe, j, 1) = " " Then
                    strAusgabe = Left(strAusgabe, j - 1) & vbNewLine & Right(strAusgabe, Len(strAusgabe) - j)
                    ExitFor = True
                    Exit For
                ElseIf Mid(strAusgabe, j, 2) = vbNewLine Or j = i -intLen Then
                    strAusgabe = Left(strAusgabe, i - 1) & vbNewLine & Right(strAusgabe, Len(strAusgabe) - i + 1)
                    ExitFor = True
                    Exit For
                End If
            Next j
            If ExitFor Then Exit For
        End If
    Next i
    If i = Len(strAusgabe) + 1 Then Exit Do
Loop
Umbrechen = strAusgabe

End Function


Der erste Parameter ist der Text und der zweite die Zeilenlänge (hier: 40)Und dann zum schreiben in die Datei einfach das hier:
code:
1:
2:
3:
open "datei.txt" for output as #1
    print #1, umbrechen(textfeld.text, 40)
close #1


Kannst ja testen, mit
code:
1:
msgbox Umbrechen("Hallo, das ist ein Test-Text !!!", 10)


__________________
Grüßle, Medi

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Medusa: 23.06.2004 23:36.

23.06.2004 23:33 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Themenstarter Thema begonnen von kilone
      Zum Anfang der Seite springen

VIELEN DANK obs unelegant ist is mir egal Augenzwinkern ich wede das morgen gleich testen und sag dann obs bei mir auch geht. Danke noch mal

__________________
Klick mich fest
24.06.2004 00:59 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB - Frage Textverabeiten

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH