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