Via Vb Zeilen in einem Textdokument zählen
Das Ganze soll in Vb mit Visual Studio (Console Appliaction) gelöst werden.
Hallo zusammen
Meine Aufgabe:
- Die Anzahl Zeilen in einem Textdokument zu zählen und oben beim Text reinschreiben
Sprich es sollte nachher etwa so aussehen.
Meine Idee war es die Zeilen in ein String einzulesen und nachher irgendwie zu zählen, doch bei der Umsetzung klappt es noch nicht ganz.
Danke schon im voraus.
Gruss
Von Google
1769
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
Hallo zusammen
Meine Aufgabe:
- Die Anzahl Zeilen in einem Textdokument zu zählen und oben beim Text reinschreiben
Sprich es sollte nachher etwa so aussehen.
Meine Idee war es die Zeilen in ein String einzulesen und nachher irgendwie zu zählen, doch bei der Umsetzung klappt es noch nicht ganz.
Danke schon im voraus.
Gruss
Von Google
1769
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
TextTexTextTextTexTextTextTexTextTextTexTextTextTexTextTextTexText
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80034
Url: https://administrator.de/contentid/80034
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo MisterGoogleHupf!
Das würde ich etwa so anlegen:
Je nachdem, ob die letzte Zeile mit CrLF endet, wäre ev noch das "+ 1" wegzulassen.
Grüße
bastla
Das würde ich etwa so anlegen:
Dim TestFile As String = "D:\Test.txt"
Dim sr As IO.StreamReader = New IO.StreamReader(TestFile)
Dim Text() As String = Split(sr.ReadToEnd, vbCrLf) 'zeilenweise in Array einlesen
sr.Close()
Dim sw As IO.StreamWriter = New IO.StreamWriter(TestFile)
sw.WriteLine(CStr(UBound(Text) + 1)) 'Zeilenanzahl schreiben
sw.Write(Join(Text, vbCrLf)) 'Array schreiben
sw.Close()
Grüße
bastla
Hallo MisterGoogleHupf!
Grüße
bastla
Die Anzahl Zeilen werden nicht in dem Textdokument ausgegeben ...
Kann ich nicht nachvollziehen - ich habe zum Test den geposteten Code in die Datei "D:\Test.txt" geschrieben - nach zweimaligem Starten als "Sub Main" einer VB2005Express-Konsolenanwendung (direkt aus der IDE) sieht der Dateiinhalt so aus:10
9
Dim TestFile As String = "D:\Test.txt"
Dim sr As IO.StreamReader = New IO.StreamReader(TestFile)
Dim Text() As String = Split(sr.ReadToEnd, vbCrLf) 'zeilenweise in Array einlesen
sr.Close()
Dim sw As IO.StreamWriter = New IO.StreamWriter(TestFile)
sw.WriteLine(CStr(UBound(Text) + 1)) 'Zeilenanzahl schreiben
sw.Write(Join(Text, vbCrLf)) 'Array schreiben
sw.Close()
Grüße
bastla
Hallo MisterGoogleHup!
Das ist ja eine recht interessante Mischung geworden ...
... aber vielleicht solltest Du es doch auf das Nötigste beschränken:
Anmerkungen:
Grüße
bastla
Das ist ja eine recht interessante Mischung geworden ...
... aber vielleicht solltest Du es doch auf das Nötigste beschränken:
Imports System.IO
Imports System.Text
Module Module1
Sub Main()
'Bestimmen und deklarieren der Variablen
Dim objStreamWriter As StreamWriter
Dim Dateiinhalt As String
Dim Datum As String = Today
Dim Zeit As String = Now
Dim FileIn As String = "pfad1 (Quelldatei)"
Dim FileOut As String = "pfad2 (Ausgangsdatei)"
'Einlesen der Datei
Dateiinhalt = My.Computer.FileSystem.ReadAllText(FileIn)
'Ersetzen des Teilstrings , durch ein Leerschlag
Dateiinhalt = Replace(Dateiinhalt, ",", " ")
'Zählen der Zeilen
Dim Text() As String = Split(Dateiinhalt, vbCrLf) 'Dateiinhalt zeilenweise in Array einlesen ...
Dim Zeilenanzahl As Long = UBound(Text) + 1 '... und die Zeilenanzahl aus dem höchsten Index ermitteln
'Erstellen der Datei
objStreamWriter = New StreamWriter(FileOut)
'Einfügen von Komponenten für die Headzeile
objStreamWriter.WriteLine("00" & vbTab & "OS1" & vbTab & Datum & Zeit & " " & vbTab & "PRO" & CStr(Zeilenanzahl))
'Einfügen des Strings "Dateiinhalt" in die Datei
objStreamWriter.Write(Dateiinhalt)
'Schliessen der Datei
objStreamWriter.Close()
End Sub
End Module
- Aus Gründen der Übersichtlichkeit habe ich die beiden Dateinamen bereits im Deklarationsblock festgelegt.
- Die Verwendung von ".WriteLine" erspart das Hinzufügen eines "vbNewLine" am Ende der Zeile.
Grüße
bastla
Hallo MisterGoogleHupf!
Meine Interpretation: 726 und 727 können eigentlich nur aus zwei früheren Testläufen mit der ersten Version von oben stammen (da wurde nur die Zeilenanzahl in die Datei geschrieben) - wenn Du die ersten 3 Zeilen erntfernst, solltest Du den ursprünglichen Text erhalten, und nach einem neuerlichen Durchlauf des Programmes dürfte dann auch nur die neue Kopfzeile (mit Zeilenanzahl 726) aufscheinen ...
Grüße
bastla
Meine Interpretation: 726 und 727 können eigentlich nur aus zwei früheren Testläufen mit der ersten Version von oben stammen (da wurde nur die Zeilenanzahl in die Datei geschrieben) - wenn Du die ersten 3 Zeilen erntfernst, solltest Du den ursprünglichen Text erhalten, und nach einem neuerlichen Durchlauf des Programmes dürfte dann auch nur die neue Kopfzeile (mit Zeilenanzahl 726) aufscheinen ...
Grüße
bastla
Hallo,
dieses Thema ist zwar schon was älter, aber es gibt immer wieder Leute die das suchen.
Wie wäre es mit diesem 1-Zeiler?
Dim s$() = System.IO.File.ReadAllLines("D:\TEST.txt", System.Text.ASCIIEncoding.Default)
'Anschließend könnte man das Ergebnis wieder in die Datei schreiben:
System.IO.File.WriteAllText("D:\TEST.txt", s.Count.ToString + vbCrLf+vbCrLf, System.Text.ASCIIEncoding.Default)
System.IO.File.AppendAllLines("D:\TEST.txt", s, System.Text.ASCIIEncoding.Default)
Gruß
Viper747
dieses Thema ist zwar schon was älter, aber es gibt immer wieder Leute die das suchen.
Wie wäre es mit diesem 1-Zeiler?
Dim s$() = System.IO.File.ReadAllLines("D:\TEST.txt", System.Text.ASCIIEncoding.Default)
'Anschließend könnte man das Ergebnis wieder in die Datei schreiben:
System.IO.File.WriteAllText("D:\TEST.txt", s.Count.ToString + vbCrLf+vbCrLf, System.Text.ASCIIEncoding.Default)
System.IO.File.AppendAllLines("D:\TEST.txt", s, System.Text.ASCIIEncoding.Default)
Gruß
Viper747