waldgnarf
Goto Top

VB 6 Zeilen one fso löschen

Hallo ich habe schon mit einem Code angefangen aber er bring mir den Text durcheinander, wenn gleiche Zeilen vorhanden sind die stehen bleiben sollen.
Ausserdem sieht ist es ziemlich viel um nur 6 Zeilen zu löschen, im Vergleich zu fso.

        Dim ADRPFA As String = "C:\ADRESS.txt"  
        Dim ZEIZAH = 1
        Do
            Try
                Dim ZEILEN As String() = My.Computer.FileSystem.ReadAllText(ADRPFA, System.Text.Encoding.Default).Split(vbCrLf)
                If ZEIZAH > 0 AndAlso ZEIZAH <= ZEILEN.Length Then
                    Dim STEWRI As IO.StreamWriter = Nothing
                    Try
                        STEWRI = New IO.StreamWriter(ADRPFA, False, System.Text.Encoding.Default)
                        Dim ZEILIS As Boolean = False
                        For Z As Integer = 0 To ZEILEN.Length - 1
                            If Z + 1 <> ZEIZAH Then
                                If ZEILIS Then STEWRI.Write(vbCr)
                                STEWRI.Write(ZEILEN(Z))
                                ZEILIS = True
                            End If
                        Next
                    Catch ex As Exception
                    Finally
                        If Not IsNothing(STEWRI) Then STEWRI.Close()
                    End Try
                End If
            Catch ex As Exception
            End Try
            ZEIZAH = ZEIZAH + 1
        Loop While ZEIZAH < 6

Bin für jeden nützlichen Vorschlag Dankbar.

Gruß waldgnarf

Content-Key: 125125

Url: https://administrator.de/contentid/125125

Ausgedruckt am: 29.03.2024 um 09:03 Uhr

Mitglied: bastla
bastla 16.09.2009 um 22:24:53 Uhr
Goto Top
Hallo waldgnarf!

Vielleicht erhältst Du mehr Vorschläge, wenn Du kurz beschreibst, was der Code eigentlich leisten soll ...

Grüße
bastla
Mitglied: Biber
Biber 16.09.2009 um 22:31:47 Uhr
Goto Top
Moin @bastla
Vielleicht erhältst Du mehr Vorschläge, wenn Du kurz beschreibst, was der Code eigentlich leisten soll ...
Soweit ich es nachvollziehen kann, ist das Ergebnis schon prima, wenn denn nicht...
wenn gleiche Zeilen vorhanden sind die stehen bleiben sollen.

Brauchst Du etwa noch mehr Infos? face-wink

Heute war im ganzen Bereich Entwicklung wieder einer dieser Montage....

Grüße
Biber
Mitglied: waldgnarf
waldgnarf 16.09.2009 um 22:46:12 Uhr
Goto Top
Hallo nochmal, also ich wollte 6 der ersten Zeilen aus einer Textdatei löschen, aber nicht mit replace weil sonst in der Textdatei auch doppelte Zeilen gelöscht werden.

Gruß waldgnarf
Mitglied: bastla
bastla 16.09.2009 um 22:51:13 Uhr
Goto Top
Hallo waldgnarf!
ich wollte 6 der ersten Zeilen aus einer Textdatei löschen
Wolltest Du das immer nach der Lottoziehung machen?

Grüße
bastla
Mitglied: waldgnarf
waldgnarf 16.09.2009 um 23:06:44 Uhr
Goto Top
Nein für ein Programm was mir an Hand der gesammelten Adressen Bewerbungen erstellt, weil es letztens so viele waren.

Gruß
Mitglied: bastla
bastla 16.09.2009 um 23:12:28 Uhr
Goto Top
Hallo waldgnarf!

Bleibt trotzdem die Frage, welche Zeilen gelöscht werden sollen ...

Grüße
bastla
Mitglied: TsukiSan
TsukiSan 17.09.2009 um 01:27:56 Uhr
Goto Top
Hi,

es geht in VB6 sicher noch einfacher, 6 Zeilen aus einer Datei zu entfernen.
Dafür benötigen wir aber mehr Infos, wie z.Bsp.:

1) sieht die Datei aus?
2) welche Zeilen sollen genau entfernt werden
3) und welche nicht?

Gruß
Tsuki
Mitglied: waldgnarf
waldgnarf 17.09.2009 um 08:14:22 Uhr
Goto Top
Hallo,
das ganze würde dann so aussehen.:

Firmaname <----löschen
Ansprechpartner (z.B. Herr Blubber) <----löschen
Bahnhofstraße 15 <----löschen
46587 Arschderweltstadt <----löschen
09.09.2009 <----löschen
administrator.de <----löschen
Referenznummer (43654574325-S) <----löschen
Andererfirmaname
Ansprechpartner (z.B. Herr Blubber)
Bahnhofstraße 17
46587 Arschderweltstadt
09.09.2009
administrator.de
Referenznummer (44354545325-S)

Von denen wollte ich die ersten 6 Zeilen löschen, ohne das der Text durcheinander kommt.
Ich dachte es währe besser es ohne
fso=CreateObject("FileSystemObject")  
zu versuchen, weil ich das gesammte Programm auch ohne gemacht und gelesen habe das es auch besser ohne läuft.

Gruß waldgnarf
Mitglied: bastla
bastla 17.09.2009 um 09:51:26 Uhr
Goto Top
Hallo waldgnarf!

Wenn es tatsächlich immer nur um die ersten 6 Zeilen geht, kannst Du wie gehabt den Dateiinhalt in ZEILEN() einlesen und dann einfach mit
For i = 6 To ZEILEN.Length - 1
    STEWRI.WriteLine(ZEILEN(i))
Next
wieder rausschreiben ...

Noch eine Anmerkung zu
... nicht mit replace weil sonst in der Textdatei auch doppelte Zeilen gelöscht werden.
Die Funktion Replace() kennt auch einen Parameter "Count", mit welchem Du festlegen kannst, wie viele Ersetzungen vorgenommen werden sollen (Du musst dann zusätzlich die "Start"-Position im String, zB 1, um am Anfang zu beginnen, angeben).

Grüße
bastla
Mitglied: 76109
76109 17.09.2009 um 11:42:33 Uhr
Goto Top
Hallo zusammen!

Ausser den chaotischen Kommunikatiosproplemen ist mir - nur so als Anmerkung - noch aufgefallen, dass im letzten Code-Beispiel von "waldgnarf", die ersten 7 Zeilen gelöscht werden sollenface-smile

Gruß Dieter
Mitglied: waldgnarf
waldgnarf 17.09.2009 um 11:45:33 Uhr
Goto Top
Danke bastla ich werds mal testen, aber mir ist aufgefallen das VB bei:
INHALT=My.Computer.FileSystem.ReadAllText(TXTPFAD)
Zeichen wie z.B. ü,ö,ä bei der Umwandlung in einen String, durch ein Viereck ersetzt. Kann man das auch irgendwie umgehen?

Gruß waldgnarf
Mitglied: bastla
bastla 17.09.2009 um 12:38:09 Uhr
Goto Top
Hallo waldgnarf!
Zeichen wie z.B. ü,ö,ä bei der Umwandlung in einen String, durch ein Viereck ersetzt. Kann man das auch irgendwie umgehen?
Mit dem passenden "Encoding"-Parameter von ReadAllText vielleicht? face-wink

Grüße
bastla
Mitglied: waldgnarf
waldgnarf 17.09.2009 um 18:16:14 Uhr
Goto Top
Hi, es tut mir leid aber ich bekomme es nicht hin.
        Dim ADINSR As String() = My.Computer.FileSystem.ReadAllText(ADRPFA, System.Text.Encoding.Default).Split(vbCrLf)
        Dim STEWRI As StreamWriter = New StreamWriter(ADRPFA)
        For Z = 0 To ADINSR.Length - 1
            If Z > 6 Then Exit For
            STEWRI.WriteLine(ADINSR(Z))
        Next

Mit diesen Code löscht er die ganze Datei aber ich hab keine Vorstellung was ich ändern soll.

Gruß waldgnarf
Mitglied: 76109
76109 17.09.2009 um 19:48:13 Uhr
Goto Top
Hallo waldgnarf!

Versuchs mal damit:
 
Dim ADINSR As String() = My.Computer.FileSystem.ReadAllText(ADRPFA, System.Text.Encoding.Default).Split(vbCrLf)
Dim STEWRI As StreamWriter = New StreamWriter(ADRPFA)
For Z = 7 To ADINSR.Length - 1
    STEWRI.WriteLine(ADINSR(Z))
Next
Erste 7 Zeilen überspringen und ab Zeile 8 in Datei schreiben.

Gruß Dieter
Mitglied: bastla
bastla 17.09.2009, aktualisiert am 18.10.2012 um 18:39:23 Uhr
Goto Top
@76109
Danke für die "Aushilfe" - am Vormittag hatte ich leider noch nicht vorhergesehen, dass aus ZEILEN() heute noch ADINSR() (und aus 6 Zeilen 7 face-wink) werden würde(n) ...

Grüße
bastla
Mitglied: waldgnarf
waldgnarf 17.09.2009 um 20:34:38 Uhr
Goto Top
Hallo nochmal, Danke didi1954 aber das löscht leider auch den kompletten Text aus der Datei.

Gruß waldgnarf
Mitglied: bastla
bastla 17.09.2009 um 20:56:58 Uhr
Goto Top
Hallo waldgnarf!

Dann eben so:
Dim ADINSR As String() = Split(My.Computer.FileSystem.ReadAllText(ADRPFA, System.Text.Encoding.Default), vbCrLf)
Dim STEWRI = My.Computer.FileSystem.OpenTextFileWriter(ADRPFA, False)
For Z = 7 To ADINSR.Length - 1
    STEWRI.WriteLine(ADINSR(Z))
Next
STEWRI.Close()
Grüße
bastla
Mitglied: waldgnarf
waldgnarf 17.09.2009 um 21:10:36 Uhr
Goto Top
Hi, und vielen Dank bastla bin froh das es doch klappt.

Gruß waldgnarf