Zum Inhalt springen

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


Technician

Empfohlene Beiträge

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...