Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB6 - wie lösche ich eine Zeile aus einer Textdatei?

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe folgendes Problem:

Mein VB-Programm verwendet eine Art Log-Datei, in der Pfadeingaben stehen.

In ein Textfeld gebe ich die Pfadeingaben ein und sie werden ans Ende der Logdatei angefügt.

Nun mein Problem: Es sollen auch Pfadeingaben entfernt werden können – ich gebe eine Pfadeingabe in ein Textfeld ein und diese Pfadeingabe wird dann aus der Log-Datei gelöscht.

(Keine Angst: Ich muss die Dinger im Endeffekt natürlich nicht selber eintippen; es gibt dann Buttons bei denen die Pfade hinterlegt sind, aber so ist es erst mal einfacher ;))

Wie mache ich das?

Meine Logdatei sieht z. B. so aus; die Anzahl der Einträge ist variabel:

C:\Test.doc

D:\MeinOrdner\Bilder\Irgendwas.bmp

C:\Texte.txt

Das Ganze ist eine ziemlich wichtige Sache :)

Eine ratlose

Technician

<FONT COLOR="#a62a2a" SIZE="1">[ 12. November 2001 14:09: Beitrag 1 mal editiert, zuletzt von Technician ]</font>

Soweit ich weiß, geht dass nicht ohne weiteres.

Du musst eine Tempdatei erstellen, und den TExt aus der erten Datei zeilenweiße rüberkopieren in die Tempdatei, bis auf die Zeile, die du nicht brauchst.

Dann die Tempdatei umbenennen, die Originaldatei löschen, die Tempdatei in den Pfad der Originaldatei kopieren, und die Tempdatei löschen.

Anders kenn ich es nicht.

Hallo,

ich habe jetzt folgenden Code verwendet (es wird noch keine Zeile entfernt; nur austesten, ob erst mal alle Daten übernommen werden):

---

Open App.Path & "\daten.txt" For Input As #1

Open App.Path & "\daten2.txt" For Append As #2

Dim LinesFromFile As String

LinesFromFile = StrConv(InputB(LOF(1), 1), vbUnicode)

Close #1

Write #2, LinesFromFile

Close #2

---

Der Inhalt der Datei "daten.txt" ist

zeileeins

zeilezwei

zeiledrei

In der Datei "daten2.txt" erhalte ich allerdings

"zeileeins

zeilezwei

zeiledrei

"

und eine Leerzeile.

Die Anführungzeichen und die anschließende Leerzeile dürfen allerdings nicht in die Datei eingefügt werden; das würde mein Hauptprogramm gewaltig verwirren ;)

Wie krieg ich die weg?!

Gruß,

Technician

<FONT COLOR="#a62a2a" SIZE="1">[ 12. November 2001 16:14: Beitrag 1 mal editiert, zuletzt von Technician ]</font>

Puuuhhhh!

Nach endlosem Hin und Her hab ich jemandem folgenden Code abgerungen ;)

Und - es geht! *freu*

Gruß,

Technician

Private Sub Command2_Click()

Dim TextArray As Variant

Dim xText$

Dim xfn&

Dim xAnzahlZeilen&

Dim ZuEnfernendeZeile&

Dim xPathAndFile$

ZuEnfernendeZeile& = 3

xPathAndFile$ = App.Path & "\daten.txt"

xText$ = "zeilezwei"

xfn& = FreeFile

Open xPathAndFile$ For Binary As xfn&

TextArray = Split(Input(LOF(xfn&), xfn&), vbCrLf, -1, 1)

Close xfn&

TextArray(ZuEnfernendeZeile& - 1) = Chr(0)

xText$ = Join(TextArray, vbCrLf)

xText$ = Replace(xText$, vbCrLf & Chr(0) & vbCrLf, vbCrLf, 1, -1)

Kill xPathAndFile$

xfn& = FreeFile

Open xPathAndFile$ For Binary As xfn&

Put #xfn&, 1, xText$

Close xfn&

End Sub

Mhhh hallo,

also ich würd' mal versuchen die Zeilen einzeln einzulesen und in die temporäre Datei zu schreiben (mit LineInput oder wie das heißt)

Hab ich auch schon länger nicht gemacht.

Quasi so:

Lese Zeile1 aus daten.txt

Vergleiche Zeile1 = zuloeschendeZeile

Wenn nein schreibe Zeile1 in daten2.txt, wenn ja nicht

usw usf.

Damit wäre das Loeschen dann auch relativ einfach...

Im Source sähe das dann vielleicht so oder ähnlich aus...

Dim Kanalnr As Long

Dim i As Long

Dim Pfad, Zeile As String

Kanalnr = FreeFile

i = 1

Pfad = Dateipfad & "\" & Dateiname

Open Pfad For Input As #Kanalnr

Do Until EOF(Kanalnr) = True

Line Input #Kanalnr, Zeile

If not Zeile = zu_loeschende_Zeile then

call schreibe_Zeile_Temp(Zeile)

End If

i = i + 1

Loop

Close #Kanalnr

Hoffe das hilft...

Bye

Hi E-Sourcer,

wenn du ein paar Minuten früher gepostet hättest, hätte ich deine Idee aufgegriffen ;)

Aber ich hab ja schon was (siehe ein Posting vor deinem), und das funktioniert einwandfrei.

Trotzdem danke!

Technician

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.