tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
992
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    gabrielgsell gabrielgsell ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    CH
    Beiträge
    76
    Hallo zusammen,
    Ich möchte gern eine bestimmte Zeile in einer Textdatei löschen. Wisst ihr wie das geht?

    Die Textdatei ist bereits eingelesen und in Zeilen unterteilt. So ist mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Dim KNr As Integer
    Dim Inhalt As String
    Dim Zeile() As String
    Dim Datei As String
     
    Datei = "C:\Datei.txt"
    KNr = FreeFile
    Inhalt = Space(FileLen(Datei))
     
    Open Datei For Binary As KNr
    Get KNr, , Inhalt
    Zeile = Split(Inhalt, vbNewLine)
    Close KNr
    Dieser Tipp hilft mir leider nicht weiter, weil ich diesen Code nicht verstehe.

    Grüsse
     

  2. #2
    Avatar von MatMagic
    MatMagic MatMagic ist offline 25712 Walk on water
    Registriert seit
    Sep 2004
    Ort
    Schleswig Holstein
    Beiträge
    130
    Mit deinem Code müsstest du erst noch die Anzahl der Zeilen in deiner Text Datei seperat ermitteln da du die Datei in einem Rutsch einliest.
    Dann die einzelnen Zeilen in Integerstrings einlesen um nachher die entsprechende Zeile explizit entfernen zu können.
    Wenn deine Text Datei nicht allzu groß ist würde ich sie Zeilenweise einlesen.
    Dann hast du
    - die Datei eingelesen
    - die Zeilenzahl bestimmt
    - und die einzelnen Zeilen in einzelnen Strings
    Damit kannst du dann bestimmte Zeilen "löschen" bzw. gar nicht erst einfügen.
    Das würde dann so aussehen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    [COLOR=limegreen]diezeile ist die nummer der zeile welche nachher entfernt wird[/COLOR] 
    dim diezeile as long
    dim counti as long
    dim zeile as string
    dim dt as string
    dim text as string
    [COLOR=limegreen]' Ich geh mal davon aus das du mit 10000 Zeilen auskommst - sonst zahl erhöhen [/COLOR] 
    dim zeiler(10000) as string 
    dim t as long
     
    dt = "c:\text.txt"
    k = FreeFile
     
    Open dt For Input As 1
    Do Until EOF(1) = True
    Line Input #1, zeile
    [COLOR=limegreen]'Zeilen deiner Datei zählen [/COLOR] 
    counti = counti + 1 
    [COLOR=limegreen]' Zeilen einzeln an string übergeben  [/COLOR] 
    zeiler(counti) = zeile
    DoEvents
    Loop
    Close 1
     
    [COLOR=limegreen]'  Deinen Text zusammenfügen ohne die gewünschte Zeile [/COLOR] '
    for t = 1 to counti
    if counti <> diezeile then text = text & zeiler(t)
    next t

    Du musst natürlich noch irgendwie bestimmen welche Zeile gelöscht werden soll - zum Testen sollte da ja ein Textfeld reichen wo du die entsprechende Zeile eingibst und diesen Wert dann an die Variable "diezeile" übergibst.

    Ich hoffe ich habe dich überhaupt richtig verstanden und das es so funktioniert.
    Gruß
    Mat
     

  3. #3
    Avatar von JensG
    JensG JensG ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Gera (Thüringen)
    Beiträge
    517
    Der Tipp aus dem vb@rchiv ist doch gar nicht
    so schwer zu verstehen.

    Du musst die Zeile ermittlen die gelöscht werden soll
    oder den Inhalt dieser Zeile wissen.
    Dann läuftst du mit Line Input die Datei durch
    und schreibst alles mit Print in eine Temporäre
    Datei außer der angegebenen Zeile(n).
    Dann werden beide Dateien geschlossen und die
    Orginale wird gelöscht.
    Dann nur noch die temp. Datei umbenennen, fertig.
     

  4. #4
    gabrielgsell gabrielgsell ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    CH
    Beiträge
    76
    Ciao,
    erst mal vielen Dank für deine Antwort.
    Mit deinem Code müsstest du erst noch die Anzahl der Zeilen in deiner Text Datei seperat ermitteln da du die Datei in einem Rutsch einliest.
    Dies mach ich so:
    Code :
    1
    
    x = Format$(UBound(strZeile) + 1, "#,##0")
    Wenn deine Text Datei nicht allzu groß ist würde ich sie Zeilenweise einlesen.
    Meine Datei ist gross, nämlich ca. 66Mbyte.

    Ich hab ein relativ komplexes Programm geschrieben und dies funktioniert soweit auch, ich muss nur noch bestimmte Zeilen löschen.

    Das ich diese Zeile einfach nicht einlese, ist eine Möglichkeit.
    Gibt es nicht einen Befehl zum eine Zeile entfernen? Z.b. Replace?

    Grüsse
     

  5. #5
    gabrielgsell gabrielgsell ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    CH
    Beiträge
    76
    Konnte es so lösen, dass ich diese Zeile einfach nicht einlese. Vielen Dank für den Tipp und die Erklärung.
    Grüsse
     

Ähnliche Themen

  1. Bestimmte Zeile aus einer Textdatei löschen
    Von Eagle-PsyX- im Forum PHP
    Antworten: 6
    Letzter Beitrag: 29.09.08, 22:51
  2. VB 2005 - Letzte Zeile einer Textdatei Löschen
    Von raccoon im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 19.09.07, 14:23
  3. zeile aus textdatei löschen
    Von ClD im Forum PHP
    Antworten: 5
    Letzter Beitrag: 28.10.04, 11:11
  4. Zeile aus Textdatei löschen...
    Von Smiley* im Forum PHP
    Antworten: 4
    Letzter Beitrag: 12.03.02, 23:52
  5. n-te Zeile in textdatei löschen !
    Von PatrickD im Forum PHP
    Antworten: 5
    Letzter Beitrag: 04.02.02, 17:30