Hilfe, Probleme mit Formatierung von File

Vamp7771

Mitglied
Hallo zusammen,

ihr seid meine letzte Hoffnung.

Seit 3 Tagen sitze ich nun an einem, für euch bestimmt einfachem, Code.

Ich muss ein File (.txt) einlesen.
Das File hat ca. 400Zeichen pro Zeile und ca. 90 Zeilen.

Da ich es über die AS400 Schnittstelle später zum laufen bekommen muss, ist es nun meine Aufgabe, dieses File in eine Datei umzuwandeln, die max. 80Zeichen pro Zeile enthält, da sonst die As400 es nicht lesen kann.

Open File Input/Output bekomme ich hin, jedoch habe ich mit dem chr="79" Probleme, selbst wenn er alles schön in 80 Zeichen pro Zeile sortiert, habe ich in meiner Schleife "while not EOF(1)". Dies führt mich zu dem Problem, dass am Anfang der letzten Zeile und EOF nicht mehr 80 Zeichen übrigbleiben.

Ich habe es mit Streamreader/Writer probiert und auch mit Open File. Ich kriege es aber einfach nicht hin. Hätte vielleicht doch besser in den 3 Jahren auspassen sollen, in denen wir VB durchgemacht haben...

Hier noch der Code (der nun nach 3 Tagen werkeln, gar nicht mehr zusammen passt)

___________________________________________________________________
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
___________________________________________________________________

FileOpen(1, "c:\toyota.txt", OpenMode.Input) ' Open file.
FileOpen(2, "c:\toyotaneu.txt", OpenMode.Output) 'create File
___________________________________________________________________
REM Dim File1 As New System.IO.StreamWriter("c:\toyotanew.txt")
REM Dim File2 As New System.IO.StreamReader("c:\toyota.txt")
REM Dim auslesen As String
REM Dim einlesen As String
___________________________________________________________________

Dim auslesen as String
Dim schreiben as String
Dim chr as String

While Not EOF(1) ' Loop until end of file 1 (Toyota.txt).

auslesen = LineInput(1) ' Read line into variable.(from Toyota.txt)
schreiben= WriteLine(2, (chr="79"))' write line into variable (into Toyota.txt)

HIER komme ich nicht mehr weiter...

End While

FileClose(1) ' Close file.
FileClose(2) ' Closing the second File



End Sub
End Class
 
Hallo, versuch´s mal hiermit:
Code:
Private Sub Command1_Click()
Dim AlterText As String
Dim NeuerText As String
Dim N As Long
Dim Nr As Integer

Nr = FreeFile

Open "D:\Test.txt" For Binary As Nr ' Datei mit 400 Zeichen pro Zeile einlesen
  AlterText = Space(LOF(Nr))
  Get Nr, , AlterText
Close Nr

  AlterText = Replace(AlterText, vbCrLf, "") ' Zeilenumbrüche entfernen

For N = 1 To Len(AlterText) Step 80 ' Neuen Zeilenumbruch bei 80 Zeichen setzen
  NeuerText = NeuerText & Mid(AlterText, N, 80) & vbCrLf
Next


Nr = FreeFile

Open "D:\Neu.txt" For Binary As Nr ' Neue Datei speichen
  Put Nr, , NeuerText
Close Nr

End Sub
 
Hallo,

erstmals vielen Dank für die schnelle Antwort!
Ich habe den Code in VB.net implementiert und er schreit nur noch bei "put"&"get Nr."
Da diese Ausdrücke nicht mehr in VB.net gebraucht werden.

Alle anderen Ausdrücke, die in VB.Net nicht mehr bekannt sind, konnte ich als Anfänger noch anpassen, aber dennoch tut er es nicht.

Ich hoffe, ich werde eines Tages auch um 9Uhr in der Früh so einen Code, zwischen Zähneputzen und Brötchen schmieren, zusammenbasteln können :)

Hat jm noch eine Idee, wie ich in VB.Net diesen Code realisieren könnte?

Gruß euer Vamp
 
Dann halt so:
Code:
Imports System.IO


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim TextLesen As StreamReader
        Dim TextSchreiben As StreamWriter
        Dim NeuerText As String
        Dim AlterText As String
        Dim N As Long

        TextLesen = New StreamReader("D:\Test.txt")
        AlterText = TextLesen.ReadToEnd()
        TextLesen.Close()
        TextLesen = Nothing

        AlterText = Replace(AlterText, vbCrLf, "")

        For N = 1 To Len(AlterText) Step 80
            NeuerText = NeuerText & Mid(AlterText, N, 80) & vbCrLf
        Next

        TextSchreiben = New StreamWriter("D:\Neu.txt")
        TextSchreiben.Write(NeuerText)
        TextSchreiben.Close()
        TextSchreiben = Nothing

    End Sub
 
Hallo,

vielen Dank!
Habe zwei kleine Fehler im Code entdeckt, korrigiert - aber jetzt läuft das Ding einwandfrei.

Ich habe schon mit dem Gedanken gekämpft, dir einen Antrag zu machen :p

Also nochmals RIESIEN DANKESCHÖN

Ihr seid Klasse!

Euer Vamp
 
Zurück