Aber wie kann ich wieder in die Datei zurückschreiben, die
Datei ist ja schon zum lesen (byteweise) geöffnet.
Bitte schick mir ein kleines Beispiel.
Nachfolgend der Source-Code für dein Problem (inkl. entsprechender Erläuterungen). Ein Punkt ist dabei zu beachten: Der neue Satz darf nicht länger sein als der alte, da sonst in den Bereich der nachfolgenden Daten geschrieben wird. Wenn das erforderlich ist, dann kommst du um das Neuerzeugen der kompletten Datei nicht herum!
Die Pfadangaben und den Dateinamen mußt du natürlich anpassen!
Nun der Code:
Dim cDaten As String
Dim iFileNr As Integer
Dim lLaenge As Long
'*** nächstes freies Datei-Handle holen ***
iFileNr = FreeFile
'*** Datei im Binary-Modus öffnen ***
Open „C:\SHAREWARE\DATEI.TXT“ For Binary As #iFileNr
If LOF(iFileNr) = 0 Then
'*** Wenn Datei leer ist, schließen und löschen ***
Close iFileNr
Kill „C:\SHAREWARE\DATEI.TXT“
Else
'*** Zeiger für Byte-Position auf 1 setzen ***
'*** (für Prüfung auf vbCrLf müssen ***
'*** mindestens 2 Byte gelesen werden ***
lLaenge = 1
Do
'*** Zeiger für Byte-Position um 1 erhöhen ***
lLaenge = lLaenge + 1
'*** Zielvariable auf Länge bringen ***
cDaten = Space$(lLaenge)
'*** Daten von Position 1 bis Zeigerposition einlesen ***
Get #iFileNr, 1, cDaten
'*** Prüfen, ob Satzende erreicht wurde ***
Loop While Right$(cDaten, 2) vbCrLf
'*** kompletten Datensatz anzeigen ***
MsgBox cDaten
'*** Satzinhalt gegen neuen Wert austauschen ***
cDaten = „Erster Satz ausgetauscht“
'*** Wenn neuer Satz länger ist als alter Satz, ***
'*** dann würden Teile des 2.Datensatzes in der Datei ***
'*** überschrieben und die Datei unlesbar, ***
'*** also verhindern! ***
If Len(cDaten) > lLaenge - 2 Then
MsgBox „Neuer Eintrag zu lang“
Else
'*** Neuer Satz paßt! ***
'*** Mit Spaces ausrichten auf Länge alter Satz ***
cDaten = cDaten & Space$((lLaenge - 2) - Len(cDaten))
'*** Satzende-Zeichen anfügen ***
cDaten = cDaten & vbCrLf
'*** Satz wieder an alte Position in Datei schreiben ***
Put #iFileNr, 1, cDaten
End If
'*** Datei schließen ***
Close iFileNr
End If
So, das wär’s!
Grüße
Siegfried