Sönke Tesch: Userbereich

Beitrag lesen

Für PHP ist dieser Dateityp in <> beschrieben.

Wo ist er beschrieben? DB-Dateien würden mich dann schon sehr interessieren.

Verzeihnung, da habe ich wohl gepennt :] Die Seite, auf die ich hinweisen wollte, findet sich in der PHP-Anleitung: http://www.php.net/manual/de/ref.dba.php, "dba Datenbank (dbm-style) Abstraktions-Funktionen".

Und wenn ich es doch mit anderen Dateien mache, ist dann dieser Gedankenweg richtig:
-Entsprechende Zeile finden
-Länge des Inhalts vom Dateianfang bis zum Anfang der Zeile auslesen und in einer Variablen speichern
-Länge der Zeile auslesen
-Länge vom Zeilenende bis zum Dateiende auslesen und in einer Variablen speichern

-Den gespeicherten Dateianfang schreiben
-Die neue Zeile schreiben
-Das gespeicherte Dateiende schreiben

Nicht ganz (oder ich habe Dich falsch verstanden). Der umständliche Weg wäre folgender:

1. Bis zur gesuchten Zeile einlesen.
2. Anfangspostion der gesuchten Zeile merken (A).
3. Vom Ende der gesuchten Zeile bis zum Dateiende komplett einlesen.
4. An Punkt A (siehe 2.) zurückspringen.
5. Neue Datenzeile schreiben.
6. Sofort in 3. gelesenen Dateirest schreiben.

Variante: Wenn die neue Datenzeilenlänge _kürzer_ ist als alte, in 5. neue Datenzeile schreiben _und_ bis zur Länge der alten mit Füllzeichen (0x0 oder Leerzeichen) auffüllen. Das Lesen (3) und Schreiben (6) des alten Dateirests kann dann entfallen, allerdings muß beim Einlesen unter Umständen auf die Füllzeichen geachtet werden (bzw. die Füllzeichen müssen entsprechend gewählt werden).

Der einfachste Weg:

1. Komplette Datei per file() in ein Feld A einlesen.
2. Gewünschte Zeile suchen und verarbeiten.
3. Aus Feld A komplette Datei neu schreiben (foreach-Schleife).

Ob einer der beiden Wege einen markanten Vorteil hat, kann man wie gesagt gerne anzweifeln. Der umständliche Weg erspart zwar den umfangreichen Festplattenzugriff zum kompletten Neuschreiben der Datei beim einfachen Weg, ist aber dafür aufwendiger zu implementieren.

Gruß,
  soenk.e