Nur erste Zeile überschreieben?

MotoxX

Grünschnabel
Hi,
ich habe in einer Datei 5 Zeilen untereinander. Nun möchte ich, das nur die erste Zeile der Datei von meinem Program geändert wird und der Rest erhalten bleibt. Weiß vielleicht jemand, wie das geht?

Vielen Dank
MotoxX
 
In Form:
Code:
txt_WriteLine "C:\DeineDatei.txt", 1, "Neuer Text"
In Modul:
Code:
Public Sub txt_WriteLine(ByVal sFilename As String, _
  ByVal LinePos As Long, ByVal sLine As String)
  
  Dim F As Integer
  Dim N As Integer
  Dim I As Long
  Dim lRow As Long
  Dim Zeile As String
  Dim myTempFile As String
  
  If Dir$(sFilename, vbNormal) = "" Then
    ' Wenn Datei nicht existiert, automatisch erstellen
    ' und Inhalt sofort speichern
    F = FreeFile
    Open sFilename For Output As #F
    
    ' Datei mit Leerzeilen füllen, bis gewünschte
    ' Schreibposition erreicht ist
    For I = 1 To LinePos - 1
      Print #F, ""
    Next I
    
    ' Inhalt speichern
    Print #F, sLine
    Close #F
    
  Else
    ' Temporäre Datei erstellen
    myTempFile = txt_TempFilename()
    
    ' Original-Datei zum Lesen und temporäre
    ' Datei zum Schreiben öffnen
    F = FreeFile: Open sFilename For Input As #F
    N = FreeFile: Open myTempFile For Output As #N
    
    ' Original-Datei einlesen und x. Zeile durch
    ' neuen Inhalt ersetzen
    lRow = 0
    While Not EOF(F)
      lRow = lRow + 1
      Line Input #F, Zeile
      
      If lRow = LinePos Then
        ' x. Zeile durch neuen Inhalt ersetzen
        Zeile = sLine
      End If
      
      Print #N, Zeile
    Wend
    
    ' sollte LinePos größer sein, als die bisherige
    ' Anzahl gespeicherter Zeilen in der Orginaldatei
    ' wurde der neue Inhalt noch nicht gespeichert
    ' und die Datei muss ggf. noch mit zusätzlichen
    ' Leerzeilen gefüllt werden!
    If lRow < LinePos Then
      ' Ggf. mit Leerzeilen füllen
      For I = lRow + 1 To LinePos - 1
        Print #N, ""
      Next I
      
      ' Neuen Zeilen-Inhalt speichern
      Print #N, sLine
    End If
    
    ' Dateien schliessen
    Close #F: Close #N
    
    ' Alte Datei löschen
    Kill sFilename
    
    ' temporäre Datei in "alte" Datei umbenennen
    FileCopy myTempFile, sFilename
    Kill myTempFile
  End If
End Sub
 
Zurück