BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- VB - Frage Textverabeiten (http://www.black-board.net/thread.php?threadid=17760)


Geschrieben von kilone am 23.06.2004 um 17:46:

  Textverabeiten

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



Geschrieben von *.rar am 23.06.2004 um 18:06:

 

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)).



Geschrieben von kilone am 23.06.2004 um 18:52:

 

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 ?



Geschrieben von Medusa am 23.06.2004 um 19:47:

 

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



Geschrieben von kilone am 23.06.2004 um 19:52:

 

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



Geschrieben von Medusa am 23.06.2004 um 23:33:

 

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)



Geschrieben von kilone am 24.06.2004 um 00:59:

 

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


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH