Technician Geschrieben 12. November 2001 Geschrieben 12. November 2001 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> Zitieren
Thombo Geschrieben 12. November 2001 Geschrieben 12. November 2001 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. Zitieren
Technician Geschrieben 12. November 2001 Autor Geschrieben 12. November 2001 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> Zitieren
Technician Geschrieben 13. November 2001 Autor Geschrieben 13. November 2001 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 Zitieren
E-Sorcerer Geschrieben 13. November 2001 Geschrieben 13. November 2001 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 Zitieren
Technician Geschrieben 13. November 2001 Autor Geschrieben 13. November 2001 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 Zitieren
Empfohlene Beiträge
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.